2016-03-29 27 views
0

に属しているUserモデルのhas_many shiftsShiftモデルがあります。なぜ路線無しのエラーが出るのか理解しようとしています。Rails 4に対応するルートがありません

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 URLを入力するとき、それは動作しますか?

私は関連する質問への回答ですべてを試しましたが、何もできないようです。誰か助けてもらえますか?

トレース:

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' 

答えて

0

次を使用する必要がありますの

<li><%= link_to "Shifts", user_shifts_path(@user) %></li>

インプレース:

<li><%= link_to "Shifts", user_shifts_path(@shifts) %></li>

user_shifts_pathuser期待しています。

更新:

<li><%= link_to "Shifts", user_shifts_path(id: @user.id) %></li>

を試してみて、あなたはエラーが発生した場合、エラーメッセージだけでなく、スタックトレースを投稿してください。

+0

よう その何かが、私が試した動作しません([@user、@shift])は、それが離れてエラーを取ったが、その後、私は 'id'が更新ソリューションをお試しください – Mohammed

+0

notfind可能性のようなエラー何かを受け取りました。 – Dharam

+0

nilのための '未定義のメソッドid ':NilClas'完全なトレースが必要な場合は、私もトレースを更新していません! – Mohammed

0

あなたが試すんでした: -

user_shifts_path(:id=>@shifts) 
+0

これはうまくいきませんでした – Mohammed

0

この

<%= link_to "Shifts", {:action=>"shifts", :controller=>"users", :id=>@user.id } %> 

または

<%= link_to "Shifts", user_shifts_path(id: @user.id) %> 
+0

'nilのための未定義メソッドID:両方のメソッドのためのNilClas' – Mohammed

+0

これはシフトメソッドからの@userがnilであることを意味します。これを確認し、空白にすることはできません。 – Anna88

1
<li><%= link_to "Shifts", user_shifts_path(@shifts) %></li> 

を使用してみてください。ここ@shiftsは、オブジェクトです。変数@shiftでユーザーIDを渡す必要があります。この

<li><%= link_to "Shifts", user_shifts_path(@user.id) %></li> 
関連する問題