render在哪里:部分html结束

时间:2013-02-13 06:37:27

标签: ruby-on-rails ajax model-view-controller partial-views renderpartial

我有一个带有ajax形式的视图:

<%= form_tag( {:action => 'some_action'}, {:remote => true}) do %>
...
  <%= submit_tag "Submit" %>
<% end %>

现在,在目标操作中,我想显示部分

def some_action
  # some logic
  render :partial => "some_partial"
end

部分只是html。 _some_partial.html.erb可能是

<br>Hi, this is the partial</br> 

当我提交表单时,我看到浏览器中收到了html响应数据包(带有firebug的网络日志),但html并没有显示在任何地方。 html应该在哪里?如何从动作渲染部分html视图?

2 个答案:

答案 0 :(得分:1)

您正在渲染部分但未指定渲染位置。

in rails 2 你可以用:

def some_action
  # some logic
  render :update do |page|
    page.replace_html 'some_div_id', :partial => 'some_partial'
  end
end

但在rails 3中,上面的代码不再有效。 见Unobtrusive Javascript

创建一个名为 some_action.js.erb 的文件并在其中编写代码:

// update div with id some_div_id
$("#some_div_id").html("<%= escape_javascript(render :partial => 'some_partial') %>");
控制器中的

def some_action
  # some logic
  respond_to do |format|
    format.js
  end
end

答案 1 :(得分:0)

我想出了如何发送和显示html。从theReq开始,只需将:remote => true, "data-type" => "html"添加到表单中,然后在页面的javascript中,捕获ajaxSuccess上返回的html以显示它:

$('form#whatever').on('ajaxSuccess', function (event, data, status, xhr) {
    $('div#target').html(data);
  }
)