没有操作响应rails路由问题中的id

时间:2011-03-14 06:10:30

标签: ruby-on-rails routes

我在rails应用程序中添加了重设密码的功能

在我的用户页面中,我列出了所有用户

如果我在用户下方以管理员身份登录,则会向用户提供重置密码的链接,这将为他们设置默认密码

  <%= link_to "Reset Password",reset_password_user_path  %>

在我的控制器用户中

    def reset_password

     @user = params[:user]
     puts "which user #{@user}"
     @user.password = "12345"
  if @user.save
    flash[:notice] = "Password successfully reseted"
    redirect_to user_path
  else
    flash[:error]= "Password not reste!"
    redirect_to user_path
  end

  end

在我的路线

   map.resources :users, :member => {:reset_password => :post}

当我运行我的用户页面时,我收到如下错误

  reset_password_user_url failed to generate from {:action=>"reset_password", :controller=>"users"} - you may have ambiguous routes, or you may need to supply additional parameters for this route.  content_url has the following required parameters: ["users", :id, "reset_password"] - are they all satisfied?

我的链接是

   <%= link_to "Reset Password",reset_password_user_path(user)  %>

然后我收到错误,因为没有操作响应2

  Processing UsersController#2 (for 127.0.0.1 at 2011-03-14 11:38:33) [GET]
   Parameters: {"action"=>"2", "id"=>"reset_password", "controller"=>"users"}

如何解决这个问题..

2 个答案:

答案 0 :(得分:2)

或者<%= link_to "Reset Password", reset_password_user_path(user), :method => "post" %>假设您有Prototype或jQuery。

这样,您仍然可以在对用户进行更改时发布操作。

答案 1 :(得分:0)

尝试使用get方法而不是路由中的帖子。