Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails 4:使用链接切换布尔值_Jquery_Ruby On Rails_Ajax_Ruby On Rails 4 - Fatal编程技术网

Jquery Rails 4:使用链接切换布尔值

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

我想做一个链接,通过ajax更改布尔值

首先,我试过了,但对Rails4来说效果不太好

我希望有人能阐明使它发挥作用的最佳做法

我现在有下面的代码

#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
端点