Ruby on rails 如何将变量从视图传递到控制器操作?

Ruby on rails 如何将变量从视图传递到控制器操作?,ruby-on-rails,Ruby On Rails,视图/车辆/_form.html.haml =链接到“停用”,“车辆/停用” 我想在上面的链接中输入@vehicle。 我该怎么做 控制器/车辆\u controller.rb def deactivate @vehicle = Vehicle.find(params[:id]) @vehicle.active = 0 @vehicle.save respond_to do |format| format.html { redirect_to v

视图/车辆/_form.html.haml

=链接到“停用”,“车辆/停用”

我想在上面的链接中输入@vehicle。 我该怎么做

控制器/车辆\u controller.rb

  def deactivate
    @vehicle = Vehicle.find(params[:id])
    @vehicle.active = 0
    @vehicle.save

    respond_to do |format|
      format.html { redirect_to vehicles_url }
      format.json { head :no_content }
    end
  end

为了使它更简单,并且以Rails的方式,您可以使用Rails
资源

# routes.rb
resources :vehicles do
  put 'deactivate', on: :member
end

# view:
= link_to 'Deactivate', deactivate_vehicle_path(@vehicle), method: :put

为了使它更简单,并且以Rails的方式,您可以使用Rails
资源

# routes.rb
resources :vehicles do
  put 'deactivate', on: :member
end

# view:
= link_to 'Deactivate', deactivate_vehicle_path(@vehicle), method: :put

马雷克·利普卡已经给出了最好的答案。 还有一种方法是使用
ajax

<%= link_to 'Deactivate', javascript::void(0), :class => "deactivate" %>
“停用”%>
放一些脚本:

<script>
$(".deactivate").click(function() {
   $.ajax({
        type: "post",
        url: "/vehicles/deactivate",
        data: {id: <%= @vehicle.id %>},
        dataType:'script',
            beforeSend: function(){
                // do whatever you want
            },
            success: function(response){
                // do whatever you want
            }
        });
});
</script>

$(“.deactivate”)。单击(函数(){
$.ajax({
类型:“post”,
url:“/vehicles/deactivate”,
数据:{id:},
数据类型:'script',
beforeSend:function(){
//你想干什么就干什么
},
成功:功能(响应){
//你想干什么就干什么
}
});
});

马雷克·利普卡已经给出了最佳答案。
还有一种方法是使用
ajax

<%= link_to 'Deactivate', javascript::void(0), :class => "deactivate" %>
“停用”%>
放一些脚本:

<script>
$(".deactivate").click(function() {
   $.ajax({
        type: "post",
        url: "/vehicles/deactivate",
        data: {id: <%= @vehicle.id %>},
        dataType:'script',
            beforeSend: function(){
                // do whatever you want
            },
            success: function(response){
                // do whatever you want
            }
        });
});
</script>

$(“.deactivate”)。单击(函数(){
$.ajax({
类型:“post”,
url:“/vehicles/deactivate”,
数据:{id:},
数据类型:'script',
beforeSend:function(){
//你想干什么就干什么
},
成功:功能(响应){
//你想干什么就干什么
}
});
});

这对我有效,我最终在控制器中使用了更新操作


=link\u to“Deactivate”,vehicle\u路径(@vehicle,:vehicle=>{:active=>0}),方法::put,:class=>'btn btn mini'
这对我来说很有效,我最终在我的控制器中使用了更新操作

=链接到“停用”,车辆路径(@vehicle,:vehicle=>{:active=>0}),方法::put,:class=>'btn-btn-mini'