我正在使用Rails 4.2和Ruby 2.1.5
这是我的新模板的单选按钮代码:
<%= form_for @api, :url => commons_path do |f| %>
<div class="form-group">
<%= f.label :status, "Status", class: "col-sm-2 control-label" %>
<div class="col-sm-8">
<%= f.radio_button :status, 'success' %>
<%= label_tag(:status, "Success") %>
<%= f.radio_button :status, 'fail' %>
<%= label_tag(:status, "Fail") %>
<%= f.radio_button :status, 'exception' %>
<%= label_tag(:status, "Exception") %>
</div>
</div>
</end>
现在,我想在数据库中创建一个新表来存储不同的状态。
create_table "statuses", force: :cascade do |t|
t.string "status"
t.datetime "created_at"
t.datetime "updated_at"
end
如何从数据库中迭代数据,使其成为模板中的单选按钮,这样我就不必每次都在模板中对单选按钮进行硬编码。
答案 0 :(得分:1)
您可以迭代所有状态记录(*)。
在您的控制器中,您可以添加:
@statuses = Status.all
在你看来:
<%= form_for @api, :url => commons_path do |f| %>
<div class="form-group">
<%= f.label :status, "Status", class: "col-sm-2 control-label" %>
<div class="col-sm-8">
<% @statuses.each do |status| %>
<%= f.radio_button :status, status.status %>
<%= label_tag(:status, status.status) %>
<% end %>
</div>
</div>
<% end %>
(*)如果您有数百种状态,请小心,因为这会立即将所有状态加载到内存中。