ruby-on-rails - 以 Form 形式向站添加 4 种饮料

标签 ruby-on-rails ruby forms models formtastic

我有两个模型:车站和饮料

车站 has_many :drinks 和 Drinks own_to :stations

我正在尝试制作表格,以便当您创建电台时,您也可以选择属于该电台的 4 种饮料。

原始形式:

<%= semantic_form_for [:admin, @station] do |f| %>
<fieldset class="inputs">
    <ol>
        <%=f.input :name %>
        <%=f.input :number, :as => :number %>
    </ol>
</fieldset>
<%= f.buttons :commit %>

我一直在尝试弄清楚如何在此表单中创建 4 个(选择)输入字段,以便您可以为当前电台选择 Drink #1、#2、#3、#4。有任何想法吗?

我目前正在尝试 accepts_nested_attributes_for :drinks, :allow_destroy => true。

饮料属于_to :station

id | name | station_id |

车站 has_many :drinks

id | name |

.

更新 正如 tihm 下面所述,您可以添加 4 种饮料并使用以下命令编辑它们的值:

<% f.fields_for :drinks do |drink_form| %>
            <%# Put your inputs here...could be a select box %>
            <%= drink_form.select :name, [['Drink #1', 'drink_1'],['Drink #2', drink_2] %>  

            <%# Or a plain input %>
            <%= drink_form.input :description %>  

            <%# ... Any other drink attributes ... %>
        <% end %>

但是,我想做的是生成四个选择框,每个选择框都列出 Drink.all 并且能够将一个饮料对象替换为另一个饮料对象。因此,当您将第一个选择框的值从可口可乐更改为百事可乐时,它会从可口可乐中删除 station_id,并将 station_id 添加到百事可乐。

我不需要能够编辑饮料属性。我只需要更改与此电台关联的饮料。这可以用同样的形式吗?

最佳答案

您需要先观看:

如果你知道你总是有 4 个或更少,那么会更容易一些,你可以跳过 Railscast 中的 js。

在您的 Controller 中,请务必构建您需要的空饮料对象:

....
@station = Station.new
4.times do
  @station.drinks.build
end
...

这样, View 中的#fields_for就有了要迭代的对象。在您看来,类似的事情:

<%= semantic_form_for [:admin, @station] do |f| %>
<fieldset class="inputs">
    <ol>
        <%=f.input :name %>
        <%=f.input :number, :as => :number %>
        <% f.fields_for :drinks do |drink_form| %>
            <%# Put your inputs here...could be a select box %>
            <%= drink_form.select :name, [['Drink #1', 'drink_1'],['Drink #2', drink_2] %>  

            <%# Or a plain input %>
            <%= drink_form.input :description %>  

            <%# ... Any other drink attributes ... %>
        <% end %>
    </ol>
</fieldset>
<%= f.buttons :commit %>

#select 在很大程度上取决于您选择的内容以及数据的结构。它来自模型、简单列表等吗?

关于ruby-on-rails - 以 Form 形式向站添加 4 种饮料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436894/

相关文章:

ruby-on-rails - RubyXL:如何将多个数据单元格添加到工作表中?

PHP 验证不起作用,被表单操作覆盖

css - 在表单输入字段中放置图像

php - Laravel/Blade 表单添加 'required' 来选择元素

ruby-on-rails - Rails HAML 条件 link_to

css - bootstrap 4 导航栏在 Rails 5 应用程序中不起作用

ruby-on-rails - 如何创建与 has_many :through relationship in Factory Girl? 的关联

ruby-on-rails - rails 上的 ruby 。在文本字段数据库中存储变量

ruby-on-rails - PinsController#index : declare the formats your controller responds to in the class level 中的运行时错误

ruby-on-rails - 从 _form 或 Controller 保存的当前用户 ID