我使用导航栏(使用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
答案 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 %>