我有一个带有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视图?
答案 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);
}
)