Devise中的ActionController :: UrlGenerationError :: Sessions #new

时间:2016-06-28 11:00:35

标签: ruby-on-rails-4 devise

我使用导航栏(使用rails上的设计;包含在我的dashboard.html.erb中),登录后工作正常;但是当想要在所有页面中使用它并将其包含在application.html.erb中时,我收到此错误: ActionController :: UrlGenerationError in Devise :: Sessions #new

其他信息:" 没有路线匹配{:action =>" index",:controller =>" devise / users"} "

这是我的route.rb:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Id,TourId,FirstName,LastName,Email,Phone,Comment,FrequentTraveler,TravelersCount,Date,ContactTimePreference,Country,Archived")] Request request)
    {
        if (ModelState.IsValid)
        {
            db.Requests.Add(request);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View();
    }

我应该如何在DRY之后的Rails中实现这一点? (我是铁杆新手)

这是我的导航栏:

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

1 个答案:

答案 0 :(得分:0)

我假设你在这里使用错误的link_to助手参数:

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

试试这个:

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

或者,如果您想指出实际的控制器:

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

有关link_to可用here

的更多信息

希望它有所帮助。

<强>更新

是的,当然,你可以做下一个:

<% 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 %>