我试图手动构建用户模型(不使用routes.rb文件中的'resources:users').我的routes.rb文件如下所示:
match '/users/:id', :to => 'users#show'
match '/all_users', :to => 'users#index'
Run Code Online (Sandbox Code Playgroud)
这是用户控制器中的索引方法:
def index
@title = "All users"
@users = User.paginate(:page => params[:page])
end
Run Code Online (Sandbox Code Playgroud)
这是我的索引视图:
<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
<li>
<%= link_to user.email, user %>
</li>
<% end %>
</ul>
<%= will_paginate %>
Run Code Online (Sandbox Code Playgroud)
当我点击localhost:3000/all_users时收到此错误消息:
undefined method `user_path'
Run Code Online (Sandbox Code Playgroud)
我不知道这是从哪里来的.
编辑:
好的,我发现在视图中将'user'更改为'@user'可以使它工作:
<%= link_to user.email, @user %>
Run Code Online (Sandbox Code Playgroud)
但我真的不明白错误信息,或'用户'和'@user'之间的真正区别.另外,单击创建的链接不会重定向到用户的页面,它将保留在localhost:3000/all_users上.
Dyl*_*kow 60
match '/users/:id', :to => 'users#show'
Run Code Online (Sandbox Code Playgroud)
应该
match '/users/:id', :to => 'users#show', :as => :user
Run Code Online (Sandbox Code Playgroud)
该:as参数告诉路由器如何命名为(您可以再添加路由_path或_url对什么:as参数).
此外,只要您直接链接到ActiveRecord模型(例如link_to user.email, user),它就会尝试user变成user_path.
| 归档时间: |
|
| 查看次数: |
42551 次 |
| 最近记录: |