1

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

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不是不好的做法吗?

谢谢你的帮助。

4

2 回答 2

0

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

如果是这样,您可以
= link_to "New event", [@parent, @event]events/index.html.haml

def index  
  @parent = Performer.find_by_id(params[:performer_id]) || Venue.find_by_id(params[:venue_id])  
  @event = Event.new  
end
于 2013-05-30T18:07:47.347 回答
0

这取决于您希望您的网址如何。如果你想要它

/performers/:performer_id/events/new

然后去

new_performer_event_path(params[:performer_id)
于 2013-05-30T19:42:10.043 回答