Jquery Rails 4:使用链接切换布尔值
我想做一个链接,通过ajax更改布尔值 首先,我试过了,但对Rails4来说效果不太好 我希望有人能阐明使它发挥作用的最佳做法 我现在有下面的代码Jquery Rails 4:使用链接切换布尔值,jquery,ruby-on-rails,ajax,ruby-on-rails-4,Jquery,Ruby On Rails,Ajax,Ruby On Rails 4,我想做一个链接,通过ajax更改布尔值 首先,我试过了,但对Rails4来说效果不太好 我希望有人能阐明使它发挥作用的最佳做法 我现在有下面的代码 #ROUTE scope 'admin', :module => "admin" do resources :users do collection do put 'toggle/', :action => :toggle_approve end end end #CON
#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 %>
#路线
作用域'admin',:module=>“admin”do
资源:用户可以
收藏办
放置“toggle/”,:action=>:toggle\u approve
结束
结束
结束
#控制器
你批准了吗
@user=user.find(参数[:id])
@user.toggle!(:核准)
render:nothing=>true
结束
“工具提示”、“数据放置”=>“顶部”、“数据原始标题”=>“编辑用户”%>
“用户”,操作::销毁,id:u.id),方法::删除,数据:{确认:“确定吗?”},类:'btn btn图标切换',“数据切换”=>“工具提示”,“数据放置”=>“顶部”,“数据原始标题”=>“删除”%>
正确%>
路径toggle\u users\u路径(u)正在返回users/toggle.2而不是users/toggle/2
有人有更好的方法来使用遥控器:true使其以更好的方式工作吗
谢谢 您没有在URL中设置接受
id
的路由,因此它将其解释为格式
占位符(因此URL中的.2
,它通常为json
、pdf
或csv
等格式保留)
相反,路由应如下所示,在成员
上绘制,而不是在集合
上绘制:
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,:remote=>true%>
如您所见,您还需要将其与put
方法一起发布,以命中put
端点