我需要将以下成员方法添加到许多资源中,有没有办法将其干燥?
member do
get :votes
post :up_vote
post :down_vote
end
在我的routes.rb中
resources :news do
resources :comments do
member do
get :votes
post :up_vote
post :down_vote
end
end
end
resources :downloads do
resources :whatever do
member do
get :votes
post :up_vote
post :down_vote
end
end
end
EDIT
我实际上已将其移至模块中,如下所示:
module Votable
module RoutingMethods
def votable_resources
member do
get "up_votes"
get "down_votes"
post "up_vote"
post "down_vote"
end
end
end # RoutingMethods
end
现在,我的routes.rb 看起来像这样:
require 'votable'
include Votable::RoutingMethods
MyApp::Application.routes.draw do
namespace :main, :path => "/" do
resources :users do
resources :comments do
votable_resources
end
end
end
end
请参阅我的内联评论,但我希望命名路线如下所示:main_users_comments_up_votes
你不能在你的路由文件中定义一个方法吗?
def foo
member do
get :votes
post :up_vote
post :down_vote
end
end
resources :news do
resources :comments do
foo
end
end
Edit
我以前没有使用过这种技术。当我做“耙路线”时,它似乎起作用了。无论如何,路由文件只是 Ruby 代码。请注意您定义的方法的名称,因为它是在 ActionDispatch::Routing::Mapper 的实例中定义的。
# routes.rb
MyApp::Application.routes.draw do
puts self
puts y self.methods.sort
end
# Terminal
> rake routes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)