【问题标题】:Form_for vs. form_with in Rails 5 with namespace带有命名空间的 Rails 5 中的 Form_for 与 form_with
【发布时间】:2018-01-10 22:38:06
【问题描述】:

我的 Rails 5 应用程序中有一个命名空间资源,并且需要正确的格式。

Rails 5 平台的脚手架给了我:

<%= form_with(model: platform, local: true ) do |form| %> 

在 Rails 4 中,我会包含我的命名空间(“客户”),例如:

<%= form_for [:customer, @platform] do |f| %>

那么 Rails 5 中的等价物是什么?

【问题讨论】:

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


    【解决方案1】:

    在你的表单中你会做这样的事情。

    <%= form_for [@customer, @platform] do |form| %>
        ...
    <% end %>
    

    new.html.erb 或等效的new 方法中:

    <%= render 'form', customer: @customer %>
    

    在您的新控制器方法中(取决于您的关系)

    def new
      @customer = @platform.customers.build
    end
    

    使用form_with

    <%= form_with(model: [:customer, @platform]) do |form| %>
      ...
    <% end %>
    

    http://api.rubyonrails.org/v5.1/classes/ActionView/Helpers/FormHelper.html#method-i-form_with

    【讨论】:

    • Rails 5 中是否有一个选项可以使用 form_with 而不是 form_for 来实现这一点?
    • 是的,答案的末尾显示了 form_with 版本 - 您在传递给 model 的内容中包含命名空间,如下所示:model: [:customer, @platform]
    • 如果我错了,请纠正我,但您的大多数示例都显示嵌套资源,而不是命名空间资源。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2018-09-23
    • 2013-01-14
    • 1970-01-01
    • 2019-02-22
    • 2017-03-17
    • 2016-01-21
    • 2017-03-21
    相关资源
    最近更新 更多