我之前在表单中添加了下拉选择,但无法让它们在索引视图中工作。我已经阅读了有关此的 API,但无法正常工作。
基本上,我在索引视图中有一个所有任务的列表。我在迁移中将数据库中的默认值设置为“否”。我希望能够遍历所有任务并显示一个下拉选择,其中包含选项 no、yes 和部分。然后我希望能够让数据库在选择时更新该任务的字段。
我无法让下拉菜单工作 - 每当我尝试使用 task.select 时,它都会说 select 是一种私有方法。抱歉,我对 Rails 还很陌生 - 任何人都可以提供的任何帮助都会很棒!如何使下拉菜单起作用,如何确保在更改值时更新数据库?
谢谢!
查看代码(这是我到目前为止所拥有的) - 任务/索引:
<table class="table table-striped table-bordered">
<tr>
<th>Name</th>
<th>Category</th>
<th>Notes</th>
<th>Completed?</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @tasks.each do |task| %>
<tr>
<td><%= task.name %></td>
<td><%= task.category %></td>
<td><%= task.notes %></td>
<td><%= task.select :complete, ['No','Yes','Partly'], :selected => 'No' %></td>
<td><%= link_to 'Show', task %></td>
<td><%= link_to 'Edit', edit_task_path(task) %></td>
<td><%= link_to 'Delete', task, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
更新:
经过更多研究,我更改了代码行:
<td><%= task.select :complete, ['No','Yes','Partly'], :selected => 'No' %></td>
到:
<% form_for task do |f| %>
<td><%= select :task, :complete, [ ["Yes",2], ["Partly",1], ["No",0]] %></td>
<% end %>
当我尝试加载页面时,这已经停止抛出错误,但是,“表单”应该在哪里 - 并且源代码中没有任何内容,这些行被跳过。如何将此表格显示出来,如何在更改选择时将其更改数据库?谢谢!