Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 Rails路由:对于如何通过不同的请求传递查询参数仍然有点困惑_Ruby On Rails_Ruby On Rails 3_Routing_Routes - Fatal编程技术网

Ruby on rails Rails路由:对于如何通过不同的请求传递查询参数仍然有点困惑

Ruby on rails Rails路由:对于如何通过不同的请求传递查询参数仍然有点困惑,ruby-on-rails,ruby-on-rails-3,routing,routes,Ruby On Rails,Ruby On Rails 3,Routing,Routes,在搜索页面上,我通过以下表单向索引操作提交查询: = form_tag reports_path, method: 'get' do = text_field_tag :query, params[:query] 我成功地将它从报告#索引视图传递到#显示视图,并使用: = link_to params[:query] ? query_report_path(report.id, params[:query]) : report do = link_to 'Back', reports_p

在搜索页面上,我通过以下表单向索引操作提交查询:

= form_tag reports_path, method: 'get' do
  = text_field_tag :query, params[:query]
我成功地将它从
报告#索引
视图传递到
#显示
视图,并使用:

= link_to params[:query] ? query_report_path(report.id, params[:query]) : report do
= link_to 'Back', reports_path, query: @query
这是可能的,因为这条路线:

  resources :reports do
    get ':query', to: 'reports#show', on: :member, as: :query
但我正试图从
报告#show
视图中的
链接
将相同的查询返回到#索引操作:

= link_to params[:query] ? query_report_path(report.id, params[:query]) : report do
= link_to 'Back', reports_path, query: @query
但它失败了:
:query
=nil

还尝试:

= link_to 'Back', reports_path(query: @query, class: 'btn btn-small')
这根本不起作用

路由语法又把我绊倒了!正确的语法是什么?有更好的方法吗?为什么这不会触发初始
表单标记正在触发的get
报表#index
:query
参数


谢谢

我认为你的第二次尝试很接近,但你的括号错了。尝试将HTML选项hash
类:'btn btn small'
作为
link\u to
的第三个参数,而不是作为
reports\u path

的参数,是否设置了@query实例变量?是的,我使用
query:params[:query]
和最近的
query:@query
通过设置(并确认@query正在设置)
@query=params[:query]
在控制器中。我怀疑
=link\u to'Back',reports\u path,query:params[:query]
的语法有问题,但我搞不清楚它是什么!?!你这个男人!!下面是有效的…
=link\u to'Back',reports\u path(query:@query),class:'btn btn small'
旁白:Rails中的“可选括号”使框架更难学习/理解,实际上,IMHO。。。