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。。。