Ruby on rails 合并链接并选择参数
在我的情况下,我有与params的链接,并选择与params 如果我过滤Ruby on rails 合并链接并选择参数,ruby-on-rails,Ruby On Rails,在我的情况下,我有与params的链接,并选择与params 如果我过滤@posts,选择(:每页),然后选择(:pub)参数,一切都正常,因为我在链接中使用了params.merge 但现在,如果我想使用第一个链接,然后选择,它不起作用,因为我不知道应该在我的选择中写入params.merge 来自我的控制器的代码: def index @posts = Post @posts = @posts.published unless params[:pub] @posts
@posts
,选择(:每页)
,然后选择(: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
params[:published]
params[:per_page]
来自视图的代码
<%= 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) %>
“如果(this.value){window.location='?per_page='+this.value;}”%>
:f)%%>
:t)%>
如果我理解正确,您正在尝试创建某种HTML过滤器以传递给控制器,对吗
如果是这种情况,您应该使用表单
构建HTML过滤器。这样,您就不必将选项“合并”到params
hash中。表格会帮你处理的
例如:
<%= 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 %>
将保存相应的值
关于
表单标签的更多信息
很好的建议,但当我尝试这样做时,我有一个语法错误语法错误,意外的关键字\u确保,预期输入结束
复选框标签行缺少引号。这就是为什么会出现语法错误。我看到它并写了
,但它仍然是语法错误。它告诉了你什么行?
它是正确的,但在选择中另一个错误是参数数目错误(2代表3..5)