Rails 3:在索引页面上使用POST表单?

时间:2011-05-16 00:09:23

标签: ruby-on-rails controller

在我的Rails 3.0应用程序中,我的资源上有一系列非常大的搜索表单:索引页面,需要使用POST而不是GET。

目前,应用程序将POST请求路由到资源#create,当我希望它路由到资源#index时。我意识到这是RESTful路由,但需要覆盖它。我怎么能这样做,同时还保留了创建该资源的新记录的能力?

非常感谢。

3 个答案:

答案 0 :(得分:3)

你最好只使用post-only的“搜索”操作 - 然后渲染索引模板,例如:

class MyController < ...
  def search
     @my_things = MyThing.find_with_search_params(params[:search]) 
     render :action => :index
  end
end

答案 1 :(得分:3)

您可以使用索引,只需在Rails 3路由中添加:

resources :my_things do
  post :index
end

答案 2 :(得分:0)

所以你希望控制器中的“创建”动作端点做两件事 - 回应搜索并进行创建吗?不好的想法,但解决方案可能就像在create action中使用“if”条件来做一个或另一个一样简单。如果它不是一个令人满意的答案,请随意澄清你的问题。