设置local:true作为Rails 5中form_with的默认值

时间:2017-12-14 22:08:30

标签: ruby-on-rails-5 ruby-on-rails-5.1

我正在开展一个项目,我们不会使用ajax调用来提交表单,因此我需要在项目中的每个表单中放置"picture": "http://www2.assemblee-nationale.fr/static/tribun/15/photos/718902.jpg", ,如rails中所示docs

local: true

默认情况下有没有办法将local选项设置为true?

我们正在使用Rails 5 :local - By default form submits are remote and unobstrusive XHRs. Disable remote submits with local: true.帮助器:

form_with

3 个答案:

答案 0 :(得分:13)

您已经说过,可以使用local: true在每个表单上进行设置。要全局设置,请使用配置选项form_with_generates_remote_forms

https://guides.rubyonrails.org/configuring.html-config.action_view.form_with_generates_remote_forms确定form_with是否生成远程表单。默认为true。

在初始化程序中设置它:

# config/initializers/action_view.rb
Rails.application.config.action_view.form_with_generates_remote_forms = false

答案 1 :(得分:5)

考虑重写form_with方法:

# form_helper.rb
def form_with(options)
  options[:local] = true
  super options
end

这应该为你的应用程序中的每个表单解决它。

答案 2 :(得分:1)

可以在config/applicaiton.rb

中设置轨道配置
module App
  class Application < Rails::Application
    # [...]

    config.action_view.form_with_generates_remote_forms = false
  end
end

Guy C的答案很好,但是将所有配置都放在该文件中而不是单独的初始化器是比较习惯的;那是大多数Rails开发人员所期望的。请注意,如果仅将其放置为config/development.rb或其他特定于环境的文件,则将带来灾难。