Rails 4中没有匹配的路由

时间:2016-03-29 02:27:10

标签: ruby-on-rails ruby-on-rails-4 url routes uri

我有一个wrIOCompletion模型,Userhas_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

4 个答案:

答案 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) %>