0

在我的情况下,我有参数链接并选择参数

如果我@posts用 select过滤,(:per_page)然后用(:pub)params 过滤一切都很好,因为我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) %>
4

1 回答 1

0

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

如果是这种情况,您应该使用form. 这样,您就不必处理将您的选项“合并”到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

于 2013-08-16T09:08:29.320 回答