javascript - 如何使用 ajax in rails 将数据从 Controller 传递到 View

标签 javascript ruby-on-rails ajax coffeescript

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

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

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

我对这些问题感到困惑,请让我问。

我在 haml 中使用 ajax 来使用来自 Controller 的数据重新加载页面的一部分。

请看我的代码。

.html.haml

= 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

def gaga
    @model = Model.new("blabla")
    render :text => @model
end

_partial.html.haml

- if @model
    = @model.html_safe
- else
    = "No data"

首先,我认为数据可以通过来自 Controller 的@model 实例变量获取,但它不能。

其次,我尝试使用 jQuery 从 ajax 响应数据中获取数据以查看(_partial.html.haml)。

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

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

对不起我马虎的英语。我希望有人给我线索。

提前致谢!

最佳答案

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

respond_to do |format|
  format.html
  format.json { render :json => @model }
end

如果你打算不通过 ajax 访问 /posts/gaga,你可能需要准备 gaga.html.haml View 文件,或者只是删除 format .html 如果您只打算在 json 中响应。


澄清一下,我看到您想在 ajax 请求后重新加载部分内容。所以而不是:

$('div.kore').html('#{ j( render( 'layouts/partial' ) )} ');

你可以这样做:

# inside gaga methods
format.json do
  render(json: {
    view: render_to_string(partial: 'layouts/partial', layout: false)
  })
end

现在在你的视野中:

= 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)

关于javascript - 如何使用 ajax in rails 将数据从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29730864/

相关文章:

javascript - 单选按钮和下拉菜单的对齐方式

javascript - 围绕给定坐标旋转像素

c# - 不是外键列,不能在这里使用

javascript - JQuery Mobile 在导航页面后丢失所有样式

javascript - setInterval 内的异步 xhr 请求不起作用 | JavaScript

javascript - 如何更改过滤器中的 servletRequest 内容长度

ruby-on-rails - rails : elasticsearch error deploying to EC2 with Rubber

ruby-on-rails - 如何在 has_many :through association 上使用 ransack 实现搜索

mysql - 在 Rails 中监控站点性能的最佳方法是什么

jquery ajax post 成功返回数据