未定义的方法`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
这是我的索引视图:
All users
-
当我点击localhost:3000 / all_users时收到此错误消息:
undefined method `user_path'
我不知道这是从哪里来的。
编辑:
好的,我发现在视图中将’user’更改为’@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