我使用的设计在应用中的第一次,我有一个奇怪的问题,我无法理解:设计链接/路由混错与非色器件模型
我已经建立了我的用户模型设计,并设置所有的注册,用户注册等,一切正常。在我的应用程序标题,我有我的导航菜单(目前为空),并在日志中的部分,注销等:
_header.html.erb
<div class='topbar'>
<div class='container'>
<%= link_to 'My app', root_path, :class => 'brand' %>
<div class='nav'>
</div>
<%= render 'layouts/user_options' %>
</div>
</div>
_user_options.html.erb
<ul class='user-options'>
<% if user_signed_in? %>
<li><%= link_to "Signed in as #{current_user.username}", '#' %></li>
<li><%= link_to "Sign out", destroy_user_session_path, :method => :delete %></li>
<% else %>
<li><%= link_to "Sign up", new_user_registration_path %></li>
<li><%= link_to "Sign in", new_user_session_path %></li>
<% end %>
</ul>
现在,我将第一个链接导航菜单,如果我使用:
<%= link_to 'Tasks', '/tasks/index' %>
一切很好。但是,如果使用:
<%= link_to 'Tasks', :controller => 'tasks', :action => 'index' %>
当我点击任何一个设计环节,如“登录”,我得到'No route matches {:controller=>"devise/tasks"}'
通过对意见的要求,这里是rake routes:
任务的输出:TOP =>路线=>环境 (请参阅通过运行带有--trace任务全部跟踪) 的MacBook-PRO-DE-O:dearsherpa奥斯卡$束EXEC耙路线
tasks_index GET /tasks/index(.:format) {:controller=>"tasks", :action=>"index"}
tasks_show GET /tasks/show(.:format) {:controller=>"tasks", :action=>"show"}
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
root / {:controller=>"pages", :action=>"home"
,这里是路线。 rb:
get "tasks/index"
get "tasks/show"
devise_for :users
root :to => 'pages#home'
这是为什么?我做错了什么?
编辑2:顺便说一句,我忘了提及Task belongs_to User
,并且用户模型已由设计生成。这可能是造成这种情况的原因。无法访问/任务/索引没有/ user/id/tasks /?
编辑:更怪异的东西,我尝试使用资源:在我的路线文件的任务,而不是该控制器的“得到”的路线,而现在当我点击<%= link_to 'Tasks', :controller => 'tasks', :action => 'index' %>
需要我的演出动作。所以显然,我的路线出现了一些问题。
运行:rake路由并将结果复制粘贴到此处。 – daniel
你可以发布routes.rb的代码并运行'rake routes'吗? – stephenmurdoch
完成后,我编辑了我的问题 –