【发布时间】:2016-07-16 10:05:32
【问题描述】:
我有一个User 模型,它属于user 的has_many shifts 和Shift 模型。我试图弄清楚为什么会出现无路由匹配错误。
在routes.rb:
get 'users/:id/shifts' => 'users#shifts', :as => :user_shifts
resources :shifts
我创建了如下路线:
user_shifts GET /users/:id/shifts(.:format) users#shifts
我在导航视图中使用它来链接到如下页面:
<li><%= link_to "Shifts", user_shifts_path(@shifts) %></li>
在我的Users 控制器中:
def shifts
@user = User.find(params[:id])
@shifts = @user.shifts
end
用户/shifts.html.erb:
<% @shifts.each do |shift| %>
<%= shift.start_time %>
<% end %>
错误:
No route matches {:action=>"shifts", :controller=>"users", :id=>nil} missing required keys: [:id]
但是当我手动输入网址http://localhost:3000/users/7/shifts 时,它可以工作吗?
我已经尝试了所有相关问题的答案,但似乎无济于事。有人可以帮忙吗?
追踪:
app/views/layouts/_nav.html.erb:24:in `_app_views_layouts__nav_html_erb__2914379975493970040_70146050606840'
app/views/layouts/application.html.erb:13:in `_app_views_layouts_application_html_erb___3858195360324705958_70145981089600'
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 url routes uri