2016-06-28 39 views
0

ログイン時に正常に動作するnav bar(レール上のdeviseを使用;私のdashboard.html.erbに含まれています)を使用します。すべてのページでそれを使用したいとapplication.html.erbでそれを含めたときしかし、私はこのエラーを取得する:ActionController ::工夫でUrlGenerationError ::セッション#新しいActionController :: UrlGenerationError in Devise :: Sessions#new

追加情報:「Noルートの一致を{:アクション=> "インデックス"、:コントローラ=> "工夫/ユーザー"}

これは私のroute.rbです:

Rails.application.routes.draw do 
    root 'dashboard#index' 
    devise_for :users 
    resources :users 

どのように私はDRY以下のRailsでこれを実装する必要がありますか?

<li><%= link_to 'Users', controller: 'users' %></li> 

はこの1つを試してみてください。私はあなたがここにlink_toヘルパーのために間違った引数を使用していると仮定し

<nav class="navbar navbar-default navbar-fixed-top"> 
<div class="container"> 
    <div class="navbar-header"> 
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse"> 
    <span class="sr-only">Toggle navigation</span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    </button> 
    <a class="navbar-brand"><%= Rails.application.class.parent_name %></a> 
    </div> 
<div class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav"> 
     <li><%= link_to 'Dashboard', root_path %></li> 
     <li><%= link_to 'Users', controller: 'users' %></li> 
     <li><a href="#contact">Contact</a></li> 
     <li class="dropdown"> 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> 
     <ul class="dropdown-menu"> 
      <li><p> You are logged in as <%= current_user.email %></p></li> 
      <li><a href="#">Another action</a></li> 
      <li><a href="#">Something else here</a></li> 
      <li role="separator" class="divider"></li> 
      <li class="dropdown-header">Nav header</li> 
      <li><a href="#">Separated link</a></li> 
      <li><a href="#">One more separated link</a></li> 
     </ul> 
     </li> 
     </ul> 
    <ul class="nav navbar-nav navbar-right"> 
     <li><%= link_to "Log out", destroy_user_session_path, method: :delete %></li> 
     <li><%= link_to edit_user_registration_path do %><strong><%= current_user.first_name %></strong><% end %></li> 
    </ul> 
</div><!--/.nav-collapse --> 
</div> 

答えて

0

は、これは私のナビゲーションバーで(レールために新しいです) :

<li><%= link_to 'Users', users_path %></li> 

か、あなたが実際のコントローラを指し示すしたい場合:

<li><%= link_to 'Users', controller: 'users', action: 'index' %></li> 

さらに詳しい情報についてlink_to利用可能here

はそれがお役に立てば幸いです。

UPDATE

はい、確かに、あなたが行うことができます次:

<% if user_signed_in? %> 
    <ul class="nav navbar-nav"> 
     <li><%= link_to 'Dashboard', root_path %></li> 
     <li><%= link_to 'Users', controller: 'users' %></li> 
     <li><a href="#contact">Contact</a></li> 
     <li class="dropdown"> 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> 
      <ul class="dropdown-menu"> 
       <li><p> You are logged in as <%= current_user.email %></p></li> 
       <li><a href="#">Another action</a></li> 
       <li><a href="#">Something else here</a></li> 
       <li role="separator" class="divider"></li> 
       <li class="dropdown-header">Nav header</li> 
       <li><a href="#">Separated link</a></li> 
       <li><a href="#">One more separated link</a></li> 
      </ul> 
     </li> 
    </ul> 
<% else %> 
    # do somethid else 
<% end %> 
+0

部分的に、今、次のエラーが表示されます。ログインしたことを条件にメニュー項目を作成する必要がありますか?見つけた:もしuser_signed_in? –

+0

はい、そうです。あなたは 'user_signed_in? 'ヘルパーを使うことができます – retgoat

+0

これはこれを行う方法ですか?または、別の方法で尋ねられます - エントリメニューはサインインされているだけでなく、実装されているかどうか(オブジェクトのCRUDなど)を繰り返すことなく何かを行うことをお勧めしますか? –

関連する問題