繁体   English   中英

未定义的方法`user_path'

[英]undefined method `user_path'

我试图手动构建用户模型(不使用routes.rb文件中的'resources:users')。 我的routes.rb文件如下所示:

match '/users/:id', :to => 'users#show'
match '/all_users', :to => 'users#index'

这是用户控制器中的索引方法:

def index
  @title = "All users"
  @users = User.paginate(:page => params[:page])
end

这是我的索引视图:

<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
  <% @users.each do |user| %>
    <li>
      <%= link_to user.email, user %>
    </li>
  <% end %>
</ul>
<%= will_paginate %>

当我点击localhost:3000 / all_users时收到此错误消息:

undefined method `user_path'

我不知道这是从哪里来的。

编辑:

好的,我发现在视图中将'user'更改为'@user'可以使它工作:

<%= link_to user.email, @user %>

但我真的不明白错误信息,或'用户'和'@user'之间的真正区别。 另外,单击创建的链接不会重定向到用户的页面,它将保留在localhost:3000 / all_users上。

match '/users/:id', :to => 'users#show' 

应该

match '/users/:id', :to => 'users#show', :as => :user

:as参数告诉路由器将路由命名为什么(然后可以将_path_url添加到:as参数中)。

此外,只要您直接链接到ActiveRecord模型(例如link_to user.email, user ),它就会尝试将user转换为user_path

对于在您的routes.rb中使用rails 4的每个人post '/users', :to => 'users#create', :as => :user和您的控制器render json: @user, status: :created, location: @user_path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM