0

我有一个带有这样的视图的 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到 URL 中?所以我也可以访问控制器中的那些

例如。评分表提交 =/movies?ratings[G]=1&commit=Refresh
点击链接 =/movies?sort=release_date

当我点击链接时,我也希望ratings[G]=1(或任何选中的复选框)出现在 URL 中。

在rails中有什么优雅的方法可以做到这一点吗?

导轨版本:3.1.0

4

2 回答 2

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? 中只有一个参数?

于 2013-01-25T14:29:03.393 回答
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 中调用哪个提交(因为可能存在任意数量的表单)。它可以是任何独特的形式。

于 2013-01-25T14:19:37.237 回答