这是我的第一个rails项目。我正在尝试编写一个表单,允许我为任何用户切换“admin”字段,当登录用户是管理员时。
我发现如何使用@post和remote:=>搜索堆栈溢出时为true。
但是,似乎单击make admin链接会将每个用户更改为管理员,并且删除管理链接会从管理列表中删除所有人。不确定为什么这样做。这是代码:
<% @users.each do |user| %>
<li>
<%= gravatar_for user, size: 35 %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to "delete", user, method: :delete,
data: { confirm: "You sure?" } %>
<% if user.admin? %>
| <%= link_to "remove admin rights", @post, :method => user.toggle!(:admin), :remote => true,
data: { confirm: "You sure?"}%>
<% else %>
| <%= link_to "make admin", @post, :method => user.toggle!(:admin), :remote => true,
data: { confirm: "You sure?"}%>
<% end %>
<% end %>
</li>
<% end %>
谢谢!
答案 0 :(得分:1)
当您点击任何内容时,用户不会被更改,当您显示视图时,用户会被更改。这样:
:method => user.toggle!(:admin)
会在那里拨打user.toggle!(:admin)
,它不会像您认为的那样附加user.toggle!
次点击。 :method
应该指示应该使用哪种HTTP方法(GET,POST,DELETE,...),而不是单击该链接应该做什么。
您需要创建一个调用user.toggle!
的控制器方法和路由,然后向该控制器添加link_to
。