Rails命名路由。你应该什么时候使用它们?

时间:2013-05-30 17:44:04

标签: ruby-on-rails routes nested-routes

一个简单的问题。我想知道这样做的正确方法是什么。说你有这个:

Event
Venue.has_many :events
Performer.has_many :events

路由:

resources :venues do
  resources :events
end

resources :performers do
  resources :events
end

你在events / index.html.haml中。链接到内部行为的正确方法是什么?


选项1

= link_to "New event", {:action => :new}

选项2

使用像?

这样的命名路线
= link_to "New event", params[:performer_id] ? new_performer_event_path(params[:performer_id) : new_venue_event_path(params[:venue_id])

选项3 或者你使用浅薄的路线?

= link_to "New event", new_event_path

只是好奇正确/行业标准的做法是什么。一般来说,选项2不是不好的做法吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你真的需要嵌套resources :events吗?

如果是这样,你可以使用
events / index.html.haml 中的= link_to "New event", [@parent, @event]

def index  
  @parent = Performer.find_by_id(params[:performer_id]) || Venue.find_by_id(params[:venue_id])  
  @event = Event.new  
end

答案 1 :(得分:0)

这取决于你想要你的网址。如果你想要它

/performers/:performer_id/events/new

然后去

new_performer_event_path(params[:performer_id)