我有一个wrIOCompletion
模型,User
和has_many shifts
模型属于Shift
。我想弄清楚为什么我得到一个无路由匹配错误。
在user
:
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
用户/ shifts.html.erb:
def shifts
@user = User.find(params[:id])
@shifts = @user.shifts
end
错误:
<% @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
答案 0 :(得分:1)
<li><%= link_to "Shifts", user_shifts_path(@shifts) %></li>
这里@shifts是一个对象。您需要在变量@shifts中传递用户ID。 它是这样的
<li><%= link_to "Shifts", user_shifts_path(@user.id) %></li>
答案 1 :(得分:0)
您应该使用以下内容:
<li><%= link_to "Shifts", user_shifts_path(@shifts) %></li>
inplace of:
user_shifts_path
user
期待<li><%= link_to "Shifts", user_shifts_path(id: @user.id) %></li>
。
<强>更新强>
尝试with open('filename') as f:
lines = filter(bool, map(lambda x: x.strip(), f.readlines()))
new_list = []
for values in lines:
for value in values.split(' '):
if value[0].isupper():
new_list.append(value + '\n')
else:
new_list.append('>' + value + '\n')
如果您遇到错误,请发布错误消息以及堆栈跟踪。
答案 2 :(得分:0)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^login\.htm$ https://www.sample.com/dev/login.htm [R=301,NC,L]
答案 3 :(得分:0)
尝试使用此
<%= link_to "Shifts", {:action=>"shifts", :controller=>"users", :id=>@user.id } %>
或
<%= link_to "Shifts", user_shifts_path(id: @user.id) %>