Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 合并链接并选择参数_Ruby On Rails - Fatal编程技术网

Ruby on rails 合并链接并选择参数

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

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

如果我过滤
@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)