我想通过ajax做一个更改布尔值的链接。
首先,我尝试了this tutorial,但它对rails 4也没有用。
我希望有人能够阐明使其发挥作用的最佳做法。
我目前有以下代码。
#ROUTE
scope 'admin', :module => "admin" do
resources :users do
collection do
put 'toggle/', :action => :toggle_approve
end
end
end
#CONTROLLER
def toggle_approve
@user = User.find(params[:id])
@user.toggle!(:approved)
render :nothing => true
end
<!-- VIEW -->
<% @users.each do |u| %>
<tr class="gradeA">
<td><%= u.name %> <%= u.last_name %></td>
<td><%= u.country %></td>
<td><%= u.created_at.strftime("%d/%m/%Y - %H:%M") %></td>
<td>
<%= link_to '<i class="fa fa-pencil"></i>'.html_safe, edit_user_path(u), class: 'btn btn-icon-toggle', "data-toggle "=> "tooltip", "data-placement" => "top", "data-original-title" => "Edit User" %>
<%= link_to '<i class="fa fa-trash-o"></i>'.html_safe, url_for(:controller => "users", action: :destroy, id: u.id), method: :delete, data: {confirm: "Are you sure?"}, class: 'btn btn-icon-toggle', "data-toggle "=> "tooltip", "data-placement" => "top", "data-original-title" =>"Delete" %>
<%= link_to "approve", toggle_users_path(u), :remote => true %>
</td>
</tr>
<% end %>
路径 toggle_users_path(u)正在返回 users / toggle.2 而不是 users / toggle / 2
有人有更好的方法来使用 remote:true 让它更好地运作吗?
谢谢!
答案 0 :(得分:1)
您尚未在网址中设置接受format
的路由,因此它将其解释为.2
占位符(因此URL中的json
,通常是保留的对于pdf
,csv
或member
)等格式。
相反,路线应如下所示,使用collection
代替resources :users do
member do
put 'toggle', :action => :toggle_approve
end
end
:
id
这会将模式挂起用户的/users/:user_id/toggle
,如下所示:
<%= link_to "approve", toggle_user_path(u), :method => :put, :remote => true %>
然后在您的视图中尝试此操作:
put
如您所见,您还需要将其与put
方法一起发布,以点击{{1}}端点。