Rails给我的网址错误的ID。它将父ID传递给子,将子ID传递给父。
在我的routes.rb中我有
resources :calendars do
resources :events
end
rake routes
告诉我正在建立良好的路线,例如
calendar_event GET /calendars/:calendar_id/events/:id(.:format) {:controller=>"events", :action=>"show"}
所以当我从我的视图中询问该路线的路径时,
<%= link_to "#{event.name} @ #{event.calendar.name} #{event.calendar.year}", calendar_event_path(event) %>
它给了我一个ids反转的网址......
http://localhost:3000/calendars/<-eventid->/events/<-calendarid->
任何帮助将不胜感激!!!
修改:在我的模型中,事件belongs_to :calendar
和日历has_many :events
。我也使用Mongoid作为我的ORM,而不是ActiveRecord,不过我希望这不是问题。
答案 0 :(得分:6)
当您使用嵌套资源的URL帮助程序calendar_event_path
时,您还需要为其提供calendar
对象(或ID),例如:
calendar_event_path(event.calendar, event)
另一种选择是:
<%= link_to "#{event.name} @ #{event.calendar.name} #{event.calendar.year}", [event.calendar, event] %>
答案 1 :(得分:0)
如果你重命名:id到另一个名字会改变生成的链接吗?我认为默认是在参数中使用:id来标识link_to中指定的资源。