合并链接并选择参数

时间:2013-08-16 08:57:15

标签: ruby-on-rails

在我的情况下,我与params链接并选择params

如果我使用选择@posts过滤(:per_page),然后使用(:pub)参数过滤一切正常,因为我在链接中使用了params.merge

但是现在如果我想使用第一个链接然后选择,它就不起作用,因为我不知道在我的选择中应该在哪里写params.merge

来自我的控制器的代码:

 def index
    @posts = Post
    @posts = @posts.published unless params[:pub]
    @posts = @posts.where(:published => params[:pub]) if params[:pub]
    @posts = @posts.page(params[:page]).per(params[:per_page] || 5)
  end

来自视图的代码

<%= select_tag :per_page, options_for_select(%w(1 2 3), params[:per_page].to_i), :onchange => "if(this.value){window.location='?per_page='+this.value;}" %>

<%= link_to "unpubl", params.merge(:pub => :f) %>
<%= link_to "publ", params.merge(:pub => :t) %>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在尝试创建某种HTML过滤器以传递给您的控制器吗?

如果是这种情况,您应该使用form构建HTML过滤器。这样您就不必将选项“合并”到params哈希中。表格将为您处理。

示例:

<%= form_tag posts_path, method: :get %>
  <%= select_tag :per_page, options_for_select(%w(1 2 3), params[:per_page].to_i) %>
  <%= check_box_tag 'published', 'true' %>

  <%= submit_tag 'Submit' %>
<% end %>

然后在你的控制器中:

params[:published]
params[:per_page]

将保留相应的值。

有关form_tag here

的更多信息