以前にドロップダウン選択をフォームに追加したことがありますが、インデックス ビューで機能させるのに問題があります。これに関する API を読みましたが、何も機能しません。
基本的に、インデックス ビューにすべてのタスクのリストがあります。移行でデータベースのデフォルトを「いいえ」に設定しました。私はすべてのタスクをループして、ドロップダウンの選択をオプション no、yes、partly とともに表示できるようにしたいと考えています。次に、タスクが作成されたときにそのタスクのフィールドを選択して更新できるようにしたいと考えています。
ドロップダウンを機能させることができません - task.select を使用しようとすると、select はプライベート メソッドであると表示されます。申し訳ありませんが、私はレールにかなり慣れていません-誰かが与えることができる助けは素晴らしいでしょう! ドロップダウンを機能させるにはどうすればよいですか? また、値が変更されたときにデータベースが確実に更新されるようにするにはどうすればよいですか?
ありがとう!
コードを表示(これまでのところ私が持っているものです) - タスク/インデックス:
<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 %>
これにより、ページをロードしようとするとエラーが発生しなくなりましたが、「フォーム」があるべき場所がなく、ソースコードにも何もないため、これらの行はスキップされます。このフォームを表示するにはどうすればよいですか?また、選択が変更されたときにデータベースを変更するにはどうすればよいですか? ありがとう!