Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
Ruby on rails 使用formtastic的多个提交操作_Ruby On Rails_Formtastic - Fatal编程技术网

Ruby on rails 使用formtastic的多个提交操作

Ruby on rails 使用formtastic的多个提交操作,ruby-on-rails,formtastic,Ruby On Rails,Formtastic,我正在尝试设置一个带有多个提交操作的formtastic表单,下面是RailsCast38。这在Formtastic中的等价物是什么 <%= submit_tag 'Create' %> <%= submit_tag 'Preview', :name => 'preview_button' %> TL;DR:如果您使用javascript提交表单,它不会在提交参数中保留提交按钮的名称 我的问题是Railscasts第288集中使用的代码。此CoffeeScript

我正在尝试设置一个带有多个提交操作的formtastic表单,下面是RailsCast38。这在Formtastic中的等价物是什么

<%= submit_tag 'Create' %>
<%= submit_tag 'Preview', :name => 'preview_button' %>
TL;DR:如果您使用javascript提交表单,它不会在提交参数中保留提交按钮的名称

我的问题是Railscasts第288集中使用的代码。此CoffeeScript函数在您提交表单时,在Stripe令牌签出后被激发:

handleStripeResponse: (status, response) ->
  if status == 200
    $("#stripe_card_token").val(response.id)
    $("#my_form_id")[0].submit()
  else
    # other stuff
由于javascript正在使用$my_form_id[0].submit进行表单提交,因此提交参数中不会包含name参数

我的解决方案是向被单击的按钮添加一个clicked属性

$('form_input[type=submit]').click ->
  $('input[type=submit]', $(this).parents('form')).removeAttr('clicked')
  $(this).attr('clicked', 'true')
..然后获取单击按钮的id属性,并用它填充隐藏字段:

submitter = $("input[type=submit].clicked=true").attr("id")
我并不特别喜欢这个解决方案。感觉我的js知道的太多了,我不喜欢依赖js来完成这类事情。欢迎任何批评或更好的解决方案:

submitter = $("input[type=submit].clicked=true").attr("id")