【问题标题】:Render a partial after submit_tag is clicked in Rails在 Rails 中单击 submit_tag 后渲染部分
【发布时间】:2016-08-22 16:07:19
【问题描述】:

我了解如何在单击普通链接时呈现部分内容,只需使用 :remote,但是当我通过 submit_tag 提交搜索表单时,我无法呈现部分内容。

这是我在 index.html.erb 中的代码

<%= form_tag(transports_path, :method => "get", id: "search-form" ) do %>

<%= select_tag "searchfrom", options_for_select(airport_names, params[:searchfrom]), :prompt => "Select From" %>
<%= select_tag "searchto", options_for_select(airport_names, params[:searchto]), :prompt => "Select To" %>

<%= submit_tag "Search" %>
<% end %>

<%= render :partial => 'transports/transports' %>

我想在单击 submit_tag 后呈现传输/传输部分,我也不想将其转换为 link_to 链接。

【问题讨论】:

  • 如果您知道如何使用remote: true 使用link_to 渲染部分,那么您也可以对表单执行相同操作。只需将remote: true 添加到您的form_tag示例: &lt;%= form_tag transports_path, :method =&gt; "get", id: "search-form", remote: true do %&gt;
  • @dkp 的解释是正确的,但是从你的代码来看,你应该做一个 POST 方法表单,然后从控制器返回一个 ajax javascript 只是为了更改部分内容(和/或)删除表格或其他任何东西
  • @ksugiarto 我直接从数据库请求。 @transports = Transport.where("strtloc LIKE ? AND endloc LIKE ?", "#{params[:searchfrom]}%", "#{params[:searchto]}%") 这是从我的控制器中搜索的内容。

标签: javascript jquery ruby-on-rails


【解决方案1】:

请允许我解释一下答案部分,因为它可能不会太短。

正确,当从表单提交时,您将那些 searchfromsearchto 参数发送给控制器作为查询成分的权利。然后从 Controllerjs 格式返回,类似于:

respond_to do |format|
  format.js
end

然后添加创建新类型的返回文件,如 create.js.erb,包含类似:

$("#transports_list ").html("<%= escape_javascript(render 'transports/transports') %>");

但请纠正我,我最后一次 RoR 编码时:P

这个方法太老了,但是这个概念或多或少可以满足你的问题,这个blog可能会帮助你理解我的想法。

【讨论】:

  • 感谢您的回答。这最终对我有用。我还添加了remote: trueform_tag,它就像一个魅力!谢谢你。这也摆脱了我的 URL 中丑陋的搜索查询。这就是我喜欢 RoR 的原因。
  • 是的,我不知道它对您有多大帮助,但很高兴听到,如果您发现您的答案与我的有很大不同,您可以随时自己回答,以便人们查看和查看从中学习:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2019-09-07
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
相关资源
最近更新 更多