如何使用 link_to 返回关联索引
How to refer back to associated index with link_to
第一次做嵌套路由,我无法弄清楚我拥有的嵌套路由的 link_to 路径。为每个
使用rails脚手架
resources :venues do
resources :events
end
我在场地模型的index.html.erb中编辑了以下内容
<%= link_to 'Events', venue_events_path(venue) %>
这让我找到了事件模型的正确 index.html.erb (venues/1/events)
但我似乎无法在活动的显示页面上找到正确的 link_to 路径让我回到 venues/1/events
使用默认脚手架,它的
<%= link_to 'Back', events_path %>
我尝试了不同的路径,例如 venue_events_path(venue),但是 rails 一直说没有 ID 找不到场地。
我假设这是因为点击默认显示 link 将我带到 localhost:3000/events/1 而不是 localhost:3000/venues/1/events/1
除了我面临的困难之外,嵌套属性的正确路径是什么?
对于嵌套路由,我将使用以下设置:
# routes.rb
resources :venues do
resources :events
end
# venues controller
class VenuesController < ApplicationController
def index
@venues = Venue.all
end
def show
@venue = Venue.find(params[:id])
end
end
# venues index.html.erb
<% @venues.each do |venue| %>
<%= link_to 'Venue', venue_path(venue) %>
<% end %>
# venues show.html.erb
# link to the events index page from the current venue
<%= link_to 'Events', venue_events_path(@venue) %>
# link to each individual event from the current venue
<% @venue.events.each do |event| %>
<%= link_to 'Event', venue_event_path(@venue, event)
<% end %>
# events controller
class EventsController < ApplicationController
def index
@venue = Venue.find(params[:venue_id])
@events = @venue.events
end
def show
@event = Event.find(params[:id])
end
end
# events index.html.erb
# link back to venue
<%= link_to 'Venue', venue_path(@venue) %>
# link to each event
<% @events.each do |event| %>
<%= link_to 'Event', venue_event_path(event.venue, event) %>
<% end %>
# events show.html.erb
# link back to events index
<%= link_to 'Events', venue_events_path(@event.venue) %>
# link back to venue show
<%= link_to 'Venue', venue_path(@event.venue) %>
请记住,这只有在您的活动有场地 ID 时才有效。您说您的事件模型中有:belongs_to :venue, optional: true
可选的 true 使得事件不需要 venue_id。如果那是你想要的,那么嵌套路由就没有意义,因为 NOT 嵌套事件不会被嵌套链接。
第一次做嵌套路由,我无法弄清楚我拥有的嵌套路由的 link_to 路径。为每个
使用rails脚手架resources :venues do
resources :events
end
我在场地模型的index.html.erb中编辑了以下内容
<%= link_to 'Events', venue_events_path(venue) %>
这让我找到了事件模型的正确 index.html.erb (venues/1/events)
但我似乎无法在活动的显示页面上找到正确的 link_to 路径让我回到 venues/1/events
使用默认脚手架,它的
<%= link_to 'Back', events_path %>
我尝试了不同的路径,例如 venue_events_path(venue),但是 rails 一直说没有 ID 找不到场地。 我假设这是因为点击默认显示 link 将我带到 localhost:3000/events/1 而不是 localhost:3000/venues/1/events/1
除了我面临的困难之外,嵌套属性的正确路径是什么?
对于嵌套路由,我将使用以下设置:
# routes.rb
resources :venues do
resources :events
end
# venues controller
class VenuesController < ApplicationController
def index
@venues = Venue.all
end
def show
@venue = Venue.find(params[:id])
end
end
# venues index.html.erb
<% @venues.each do |venue| %>
<%= link_to 'Venue', venue_path(venue) %>
<% end %>
# venues show.html.erb
# link to the events index page from the current venue
<%= link_to 'Events', venue_events_path(@venue) %>
# link to each individual event from the current venue
<% @venue.events.each do |event| %>
<%= link_to 'Event', venue_event_path(@venue, event)
<% end %>
# events controller
class EventsController < ApplicationController
def index
@venue = Venue.find(params[:venue_id])
@events = @venue.events
end
def show
@event = Event.find(params[:id])
end
end
# events index.html.erb
# link back to venue
<%= link_to 'Venue', venue_path(@venue) %>
# link to each event
<% @events.each do |event| %>
<%= link_to 'Event', venue_event_path(event.venue, event) %>
<% end %>
# events show.html.erb
# link back to events index
<%= link_to 'Events', venue_events_path(@event.venue) %>
# link back to venue show
<%= link_to 'Venue', venue_path(@event.venue) %>
请记住,这只有在您的活动有场地 ID 时才有效。您说您的事件模型中有:belongs_to :venue, optional: true
可选的 true 使得事件不需要 venue_id。如果那是你想要的,那么嵌套路由就没有意义,因为 NOT 嵌套事件不会被嵌套链接。