html - 我需要在 html.erb ruby​​ 中创建动态选择

标签 html ruby-on-rails ruby erb

早上好。我是 Ruby 的新手,遇到了一个小问题。

在表单中,我想选择类别。类别可以由用户插入,因此选择必须是动态的。

我尝试过这样的:

<div class="input-field">
    <select class="multiple">
      <%= f.select :category, Category.all.collect {|x| [x.name, x.id]} %>
    </select>
</div>

它可以工作,但在 Chrome 控制台上,看起来像这样:

<div class="input-field">
  <select class="multiple"></select>
  <option value="2">Pastasciutta</option>
  <option value="3">Vegetariano</option>
</div>

类别 ID 已正确用作值,并且列表已正确显示。但是,正如您所看到的,“选项”不在“选择”标签之外。你能解释一下为什么吗?我该如何解决这个问题? 该列表仅显示为列表,但我想标记和取消标记 x 类别。

我的 Ruby 版本 -> 2.3.1

----编辑----

     _form.html.erb
<%= form_for(recipe) do |f| %>
  <% if recipe.errors.any? %>
    <div id="error_explanation">
       <h2><%= pluralize(recipe.errors.count, "error") %> prohibited this recipe from being saved:</h2>

      <ul>
       <% recipe.errors.full_messages.each do |message| %>
         <li><%= message %></li>
       <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name %>
  </div>

  <div class="field">
    <%= f.label :time %>
    <%= f.number_field :time %>
  </div>

  <div class="field">
    <%= f.label :price %>
    <%= f.text_field :price %>
  </div>

  <div class="field">
    <%= f.label :recipe %>
    <%= f.text_area :recipe %>
  </div>


  <div class="input-field">
    <%= f.select :category, Category.all.collect {|x| [x.name, x.id]}, {}, class: "multiple" %>
  </div>

  <br>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

这就是渲染的内容:

http://prnt.sc/cfqmp6

最佳答案

行:

<%= f.select :category, Category.all.collect {|x| [x.name, x.id]} %>

已经渲染 <select>元素的标记部分,您可以通过将上面的行放在另一个 <select> 中来复制此元素。 。更改此:

<select class="multiple">
  <%= f.select :category, Category.all.collect {|x| [x.name, x.id]} %>
</select>

对此:

<%= f.select :category, Category.all.collect {|x| [x.name, x.id]}, {}, class: "multiple" %>

最后两个参数是 optionshtml_options到选择标签。请参阅:http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-select

关于html - 我需要在 html.erb ruby​​ 中创建动态选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39396913/

相关文章:

ruby - Dashing 框架未连接到数据库

mysql - 协会不能双向发挥作用

javascript - 无法让 Jquery UI 正常工作。需要拆分代码

html - Bootstrap navbar - 将导航项包装到下一行

javascript - 将函数从 .js 传递到 HTML

ruby-on-rails - 保存所涵盖的内容(:validate => false)?

ruby-on-rails - 我怎样才能只在某些页面而不是全部页面上显示标题

ruby-on-rails - Rails 中空对象的命名约定?

ruby-on-rails - RubyMine:预期;或一些冒号后的行尾错误

html - 如何从 iOS 项目中读取图像以设置为 iOS 项目中的 html 嵌入代码