我想在搜索时将params隐藏在rails url中。 所以以前我的链接是这样的,
http://localhost:3000/photos?utf8=%E2%9C%93&room_ids[]=534b6cc56d696e0f000d0000&commit=Refine+Search
我想实现如下链接,
http://localhost:3000/photos
所以我已将form_tag方法从Post
更改为Get
。
<%= form_tag photos_path, :method => 'post' do %>
...
<% end %>
在提到的路线文件中,
match '/photos/index', via: :post
在做出错误之后,
ActionController::ParameterMissing in PhotosController#create
param not found: photo
如何实现!!!
答案 0 :(得分:1)
如果要在params上执行自定义操作,最好在控制器中编写方法
#photos controller
def customize
#custom action on params
end
添加方法&#39;自定义&#39;在路线中并在表格中指定路线。
此外,如果您的表单没有Photo模型中的任何字段,您可以使用ActiveModel :: Model来投影对象。 Checkout http://blog.remarkablelabs.com/2012/12/activemodel-model-rails-4-countdown-to-2013和http://prasadsurase.github.io/blog/2014/02/19/using-activemodel-model-for-devise-based-invitations/描述了如何使用ActiveModel :: Model。
答案 1 :(得分:-3)
<%= form_tag photos_index_path, :method => 'post' do %>
或
match '/photos/index', via: :post, as: :photos
在终端中,键入佣金路线
match '/photos/index' => photos_index /photos/index photos#index
match '/photos/index', via: :post, as: :photos => photos /photos/index photos#index
切勿使用传统的Wild控制器路由。此路由将通过GET请求访问每个控制器中的所有操作。
# very bad
match ':controller(/:action(/:id(.:format)))'
不要使用匹配来定义任何路线。它已从Rails 4中删除。