在Rails中编辑当前用户3

时间:2011-04-03 14:53:02

标签: ruby-on-rails

可以从普通的资源丰富的URI编辑用户,例如:

/users/1/edit

问题是在我的应用程序中,编辑用户页面是主页或根路径。

# routes.rb

root :to => "users#edit"

因此,在没有@user的情况下,我尝试将params[:id]设置为当前用户。

# app/controllers/users_controller.rb

def edit
  @user = (params[:id]) ? User.find_by_id(params[:id]) : @current_user
end

不幸的是,我无法正确地指出表单。

# app/views/shared/_manage_users.rb

<%= form_tag follow_user_path, :id => 'update-following-form' %>

我得到了:

No route matches {:action=>"follow", :controller=>"users"}

follow是用户资源的成员路由,具有相应的控制器方法。如果我通过此问题顶部的URI /users/1/edit访问该页面,一切正常,并且不会引发任何错误。

我不确定我是否会以完全错误的方式解决这个问题,或者我是不是使用了正确的表单助手或者愚蠢的东西。 如何解决此问题,或者我可以遵循哪些步骤进行调试?

3 个答案:

答案 0 :(得分:2)

成员路由期望成员作为参数传递。您的路线期待用户,如下所示:

follow_user_path(@user)

答案 1 :(得分:1)

路线中的

执行此操作

resource :user

而不是

resources :users

现在id param不在url中。您只需要确保用户已登录

答案 2 :(得分:1)

我认为您需要在routes.rb中实际定义follow_user。

示例:

  

发布“user / follow”=&gt; “用户#follow”,:as =&gt; :follow_user