Rails3路由:如何将两个请求定向到单个入口点

时间:2011-01-20 06:36:28

标签: ruby-on-rails routes

在我的控制器中,我想对新的和编辑请求使用相同的代码。像这样:

def edit
  @tag= Tag.find(params[:id]) || Tag.new
end

我的问题是:我如何在routes.rb(Rails3)中指出这个?

1 个答案:

答案 0 :(得分:1)

假设您正在使用资源路由,就像这样:

# routes.rb
resources :tags

这将创造新的并为您创造。

假设您只想要编辑新地图,但保持创建不变,请使用以下内容:

get "/tags/new" => "tags#edit", :as => :new_tag_path
resources :tags

订单很重要。上面的一个将首先匹配。因此,如果路径为/tags/new,则会将其路由到编辑操作。并且因为它已经匹配,所以它不会下降,所以虽然resources :tags也定义了/tags/new到新操作,但是没有成功匹配路由。

所以只添加一行即可。