HTML输入类型=提交赢得';当非常相似的按钮工作时,rails应用程序中不会启动吗?

HTML输入类型=提交赢得';当非常相似的按钮工作时,rails应用程序中不会启动吗?,html,ruby-on-rails,forms,Html,Ruby On Rails,Forms,环境是Ruby 2.0.0、Rails 4.0.3、Windows 8.1、Simple Form、IE或Firefox 在编辑操作中获取HTML输入类型=submit to fire时遇到问题。新的行动几乎是一样的,而且一直有效。在本例中,我已经删除了表单上几乎所有的输入和子菜单,以简化这个特定问题 当我在新操作中单击submit按钮时,它触发controller创建操作。当我在编辑操作中单击submit按钮时,实际上什么都没有发生。任何操作的日志或客户端控制台中都不会出现任何跟踪信息。未触发

环境是Ruby 2.0.0、Rails 4.0.3、Windows 8.1、Simple Form、IE或Firefox

在编辑操作中获取HTML输入类型=submit to fire时遇到问题。新的行动几乎是一样的,而且一直有效。在本例中,我已经删除了表单上几乎所有的输入和子菜单,以简化这个特定问题

当我在新操作中单击submit按钮时,它触发controller创建操作。当我在编辑操作中单击submit按钮时,实际上什么都没有发生。任何操作的日志或客户端控制台中都不会出现任何跟踪信息。未触发控制器更新操作。在这两种情况下,断点都显示@car正在引用适当的car对象

我使用标准HTML进行提交,因为表单按钮从来不会与我正在构建的复杂菜单一起工作。我使用form属性将按钮与表单相关联,并进行了三重检查,以确保HTML输入标记中指定的表单与表单中指定的表单相匹配,可以是new_car,也可以是edit_car

控制器操作包括:

  def edit
    @car = Car.find(params[:id])
  end
  def new
    @car = Car.new
  end
路由定义使用:

  resources :cars
new.html.erb:

<div class="row">
  <%= render partial: 'new', layout: 'layouts/sf_label', locals: { title: 'New Car' } %>
</div>
<div class="row">
  <%= render partial: 'edit', layout: 'layouts/sf_label', locals: { title: 'Edit Car' } %>
</div>
为新车生成的表单标签:

<form novalidate="novalidate" method="post" id="new_car" class="simple_form form-vertical" action="/cars" accept-charset="UTF-8">

为编辑车生成的表单标签:

<form id="edit_car_53" class="simple_form form-vertical" novalidate="novalidate" method="post" action="/cars/53" accept-charset="UTF-8">

根据格雷姆·麦克莱恩的要求,我在问题中输入了HTML表单标签。在这里,我注意到表单属性并不像我预期的那样是edit_car,而是edit_car[:id],例如edit_car_53。因此,submit按钮与表单断开连接,无法启动。为了解决此问题,我将表单更新为仅使用edit_car,如下所示:

  <%= simple_form_for @car,
                      defaults: {label: false},
                      html: {id: 'edit_car', class: 'form-vertical'},
                      wrapper: :vertical_form,
                      wrapper_mappings: {
                              check_boxes: :vertical_radio_and_checkboxes,
                              radio_buttons: :vertical_radio_and_checkboxes,
                              file: :vertical_file_input,
                              boolean: :vertical_boolean
                      } do |f| %>


这解决了这个特殊的问题,这要感谢许多人的响应,尤其是格雷姆。

是否是
form=“edit\u car”
使它无法工作?对于新操作,您是否尝试过使用
form=“new\u car”
?那么,按钮的表单属性应该与表单中的表单属性相同,即edit\u car。然而,在尝试任何事情一次的理念下,我尝试了它。同样的结果,基本上没有反应。但是,谢谢。你是如何提交表格的?您是否使用Javascript扫描表单,然后在有效的情况下提交表单?当使用完整表单时,我在表单中运行jQuery。为了诊断这个问题,我删除了所有这些输入并删除了jQuery代码。这个问题没有我提供的JavaScript代码,但是SimpleForm和其他gems可能有js代码。@Graeme McLean——事实上,我刚刚在表单定义中添加了id:“edit_car”,它就启动了!请将您的答复更新为正式答复,以便我可以接受。感谢所有的帮助!
<input type="text" value="AStock" placeholder="Stock number?" name="car[stock_number]" id="car_stock_number" form="edit_car" class="string required" car="#&lt;Car:0x62ebd08&gt;">

<input type="submit" class="btn btn-default btn btn-primary" value="Update Car" form="edit_car">
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.3'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jquery-turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'bootstrap-sass'
gem 'figaro'
gem 'pg'
gem 'simple_form', '3.0.1'
gem 'thin'
gem 'devise'
gem 'cancan'
gem 'rolify'
gem 'acts_as_tenant'
gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
gem 'jquery-ui-rails'
group :production do
  gem 'rails_12factor'  # For Heroku
  end
group :development do
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'guard-bundler'
  gem 'guard-rails'
  gem 'guard-rspec'
  gem 'hub', :require=>nil
  gem 'quiet_assets'
  gem 'rails_layout'
  gem 'rb-fchange', :require=>false
  gem 'rb-fsevent', :require=>false
  gem 'rb-inotify', :require=>false
end
group :development, :test do
  gem 'factory_girl_rails'
  gem 'rspec-rails'
end
group :test do
  gem 'database_cleaner', '1.0.1'
  gem 'email_spec'
end
<form novalidate="novalidate" method="post" id="new_car" class="simple_form form-vertical" action="/cars" accept-charset="UTF-8">
<form id="edit_car_53" class="simple_form form-vertical" novalidate="novalidate" method="post" action="/cars/53" accept-charset="UTF-8">
  <%= simple_form_for @car,
                      defaults: {label: false},
                      html: {id: 'edit_car', class: 'form-vertical'},
                      wrapper: :vertical_form,
                      wrapper_mappings: {
                              check_boxes: :vertical_radio_and_checkboxes,
                              radio_buttons: :vertical_radio_and_checkboxes,
                              file: :vertical_file_input,
                              boolean: :vertical_boolean
                      } do |f| %>