【问题标题】:Rails 4 yield additional form fieldsRails 4 产生额外的表单域
【发布时间】:2014-03-16 05:26:16
【问题描述】:

我正在尝试在创建新条目时删除我的一个表单,该表单有时具有附加字段(用于嵌套模型),但在执行更新时不需要这些字段。因此,我试图通过一个块传递额外的字段,但表单对象没有被正确传递。

有没有办法将表单对象(或任何变量)传递给yield

示例代码供参考:

_form.slim

= nested_form_for @model do |f|
  .row
    = f.label :name
    = f.text_field :name, autofocus: true
  ...
  = yield
  ...
  = f.submit 'Save'

new.html.slim

== render layout: 'model/form' do
  h3 Additional Fields
  = f.fields_for :nested do |h|
      = a.label :name, 'Nested Name'
      = a.text_field :name
      = a.link_to_remove do
        = fa_icon 'times-circle-o'
  = f.link_to_add "Add another nested model", :nested

edit.html.slim

== render layout: 'model/form'

【问题讨论】:

  • 我有点困惑,你为什么要在你的视图中渲染布局?你不应该渲染局部吗?
  • 我开始尝试使用 partials 来做这件事,但它不起作用,所以我尝试关注这个帖子:stackoverflow.com/questions/2951105/…
  • 嗯,这个问题已经 4 岁了,我不确定这是否真的有用。就个人而言,我只是使用局部变量,并传入像 additional_fields 这样的局部变量,然后以局部变量的形式执行条件,并且仅在 additional_fields 为真时显示其他字段。

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


【解决方案1】:

为了详细说明我的评论,这就是我使用部分的方式:

_form.slim

= nested_form_for @model do |f|
  .row
    = f.label :name
    = f.text_field :name, autofocus: true

  ...

  - if defined?(additional_fields)
    h3 Additional Fields
      = f.fields_for :nested do |h|
          = a.label :name, 'Nested Name'
          = a.text_field :name
          = a.link_to_remove do
            = fa_icon 'times-circle-o'
      = f.link_to_add "Add another nested model", :nested

  ...

  = f.submit 'Save'

new.html.slim

  == render 'model/form', :additional_fields => true

edit.html.slim

  == render 'model/form'

我可能遗漏了一些东西,但我不确定为什么这不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多