我有一个“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.行动:
会发生什么?谢谢。
答案 0 :(得分:1)
因为link_to helper中的:method是定义要请求的HTTP方法。但不是控制器中的动作。
您需要使用url_for系统
<%= link_to 'Ban !', {:controller => 'users', :action => 'ban', :user_id => user.id}, {:confirm => 'Are you sure?'} %>