Rails在提交时添加隐藏的参数

时间:2014-05-21 08:41:04

标签: ruby-on-rails ruby-on-rails-4

我有一个Ruby on Rails 4.0应用程序,我想知道是否可以将带有JS的隐藏参数传递给Rails中的表单提交表单?

2 个答案:

答案 0 :(得分:0)

我这样做的方法是将它实际应用于控制器(而不是JS):

#app/controllers/your_controller.rb
def create
   @model = Model.new(controller_params)
   @model.save
end

private

def controller_params
   params.require(:controller).permit(:params).merge(param: "value")
end

<强>更新

根据您的评论,您可以像这样在JS中使用.on("submit")函数:

#app/assets/javascripts/application.js
$(document).on("submit", "#form", function(){
    // append your params in here
});

至于添加参数,你可以从中受益: Adding POST parameters before submit

$('#commentForm').submit(function(){ //listen for submit event
    $.each(params, function(i,param){
        $('<input />').attr('type', 'hidden')
            .attr('name', param.name)
            .attr('value', param.value)
            .appendTo('#commentForm');
    });

    return true;
});

答案 1 :(得分:0)

为什么不在表单中添加具有默认值的隐藏字段?使用simple_form和haml,它将如下所示:

= f.input :field, as: :hidden, default: :value