为什么我有一个未知的动作?

时间:2010-07-15 09:56:46

标签: ruby-on-rails ruby

我有一个“manageUser”页面,路线就是这样:

  map.manageUsers "manageUsers", :controller => "users", :action => "manageUsers"

并且,它像用户的索引,但为管理员禁止用户提供禁止按钮,所以,我有这样的事情:

<% @users.each do |user| %>

    <td><%=h user.username %></td>

        <td><%= link_to 'Ban !', user, :confirm => 'Are you sure?', :method => :ban %></td>  

<%end%>

用户控制器的方法如下:

 def ban
    @user = User.find(params[:id])    
    @user.isBan = true               
     if @user.save
       flash[:notice] = @user.username ' is successful banned.'      
     else   
       flash[:error] = @user.username ' may have greater power than you.'      

    end 
    redirect_to manageUsers_url

  end         

但是当我点击链接时,它会显示我的地址:

http://localhost:3000/users/46

出现此错误:

  

未知行动

     

没有采取行动回应46.行动:

会发生什么?谢谢。

1 个答案:

答案 0 :(得分:1)

因为link_to helper中的:method是定义要请求的HTTP方法。但不是控制器中的动作。

您需要使用url_for系统

<%= link_to 'Ban !', {:controller => 'users', :action => 'ban', :user_id => user.id}, {:confirm => 'Are you sure?'} %>