0

我有一个 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 视图?

4

2 回答 2

1

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

在 rails 2你可以这样做:

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

但在 rails 3 中,上面的代码不再有效。请参阅不显眼的 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
于 2013-02-13T06:49:23.903 回答
0

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

$('form#whatever').on('ajaxSuccess', function (event, data, status, xhr) {
    $('div#target').html(data);
  }
)
于 2013-03-01T21:06:51.397 回答