我有一个带有这样的视图的rails应用程序视图
= form_tag movies_path, :method => :get, :id => "ratings_form" do
Include:
- @all_ratings.each do |rating|
= rating
= check_box_tag "ratings[#{rating}]", 1, @filter.include?(rating)
= submit_tag 'Refresh', :id => "ratings_submit"
以后在同一视图中链接
link_to "Movie Title", movies_path(:sort => :title)
我想点击链接Movie Title
,我还能将ratings_form
的参数添加到网址吗?所以我也可以访问控制器中的那些
EG。
评级表提交= /movies?ratings[G]=1&commit=Refresh
点击链接= /movies?sort=release_date
当我点击链接时,我希望ratings[G]=1
(或任何选中的复选框)都在URL中。
在rails中有没有优雅的方法呢?
Rails版本:3.1.0
答案 0 :(得分:1)
你可以这样做:
link_to "Movie Title", movies_path(:sort => :title), onclick: "submit_ratings_form($(this));"
# some jQuery to add the params to the form and submit it:
var submit_ratings_form = function(a_tag) {
var params = a_tag.href.split('?')[1];
var input = $("<input>").attr("type", "hidden").attr("name", params.split('=')[0]).val(params.split('=')[1]);
$('#ratings_form').append($(input));
$('#ratings_form').submit();
}
此代码假定您在link_to中只有一个参数?
答案 1 :(得分:0)
备选方案1:
我相信你可以这样做:
my_array = [1,2,3,4,5]
link_to "Movie Title", movies_path(:sort => :title, :ratings=> my_array)
备选方案2:
创建一个带有链接的表单,该链接通过JS调用表单上的提交。视图中的代码如下所示:
<% form_tag movies_path, :method => :get, :id => 'movie_'+arr.to_s do |f|%>
<%= hidden_field_tag('ratings[]', arr[0]) %>
<%= hidden_field_tag('ratings[]', arr[1]) %>
<%= hidden_field_tag('ratings[]', arr[2]) %>
<%= link_to_function 'Movie Title', "document.getElementById('movie_"+arr.to_s+"').submit()"%>
<%end%>
表单ID 用于标识在JS中调用哪个提交(因为可能有任意数量的表单)。它可以是每种形式的任何独特。