首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在rails中使用ajax将数据从控制器传递到视图

如何在rails中使用ajax将数据从控制器传递到视图
EN

Stack Overflow用户
提问于 2015-04-19 14:01:16
回答 1查看 2.6K关注 0票数 3

我今天发了两次类似的问题

how-to-use-local-or-instance-variable-in-ruby-code-in-coffeescript-in-haml-templ

ajax-in-rails-returns-alway-error-callback

我对这些问题很困惑,请允许我问。

我正在使用haml中的ajax来用控制器中的数据重新加载页面的一部分。

请看我的密码。

.html.haml

代码语言:javascript
运行
复制
= render 'layouts/partial' #This is partial. I want to reload this part

:coffee
    $('input#field').change ->
        $.ajax
            url: '/posts/gaga'
            type: "POST"
            dataType: 'text'
            error: (jqXHR, textStatus, errorThrown) ->
                alert "error"
            success: (data, textStatus, jqXHR) ->
                alert "success"
                $('div.kore').html('#{ j( render( 'layouts/partial' ) )} ');

posts_controller.rb

代码语言:javascript
运行
复制
def gaga
    @model = Model.new("blabla")
    render :text => @model
end

_partial.html.haml

代码语言:javascript
运行
复制
- if @model
    = @model.html_safe
- else
    = "No data"

首先,我认为数据可以从控制器获得@model实例变量,但它不能。

其次,我尝试使用_partial.html.haml从( jQuery )获取数据。

回调和响应以文本的形式正确返回。

如何从ajax响应数据传递数据以查看数据,或者还有其他方法?

抱歉,我的英语太粗俗了。我希望有人能给我线索。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-19 14:42:10

您可以将ajax请求设置为/posts/gaga.json,并在控制器的gaga方法中:

代码语言:javascript
运行
复制
respond_to do |format|
  format.html
  format.json { render :json => @model }
end

如果打算也不通过ajax访问gaga.html.haml,则可能需要准备/posts/gaga视图文件;如果只打算在json中响应,则只需删除format.html即可。

为了澄清,我看到您希望在ajax请求之后重新加载这个部分。因此,与其:

代码语言:javascript
运行
复制
$('div.kore').html('#{ j( render( 'layouts/partial' ) )} ');

你可以这样做:

代码语言:javascript
运行
复制
# inside gaga methods
format.json do
  render(json: {
    view: render_to_string(partial: 'layouts/partial', layout: false)
  })
end

现在在你的视野里:

代码语言:javascript
运行
复制
= render 'layouts/partial' #This is partial. I want to reload this part

:coffee
  $('input#field').change ->
    $.ajax
      url: '/posts/gaga.json'
      type: "POST"
      error: (jqXHR, textStatus, errorThrown) ->
        alert "error"
      success: (data, textStatus, jqXHR) ->
        alert "success"
        $('div.kore').html(data.view)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29730864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档