我希望登录用户对某个主题进行投票。
要求用户在文本字段中输入投票正常工作:
<select name=#{current_user.name}_vote">
<%= @votes.each do |vote| %>
<option value="<%= vote %>"><%= vote %></option>
<% end %>
</select>
但是从下拉列表中选择可以改善这一点。
我可以通过以下方式获取列表:
{{1}}
但是我没有找到如何将它连接到表单,所以我得到错误&#34; param丢失或值为空:topic&#34;
我在这方面工作了很长时间没有成功。我是铁路的初学者。如果可以的话请帮忙。谢谢。
答案 0 :(得分:0)
我认为您应该尝试将select
包裹在form
。
<%= form_for @topic do |t| %>
<select name=#{current_user.name}_vote">
<%= @votes.each do |vote| %>
<option value="<%= vote %>"><%= vote %></option>
<% end %>
</select>
<% end %>
最好使用select
Rails助手。
答案 1 :(得分:0)
您可以尝试这样:
在表单中:
<p>
<h1 style="color:red;"> Register your vote </h1>
<%= form_for @topic do |t| %>
<%=t.label :"#{current_user.name}_vote".to_sym%>
<%= t.text_field :"#{current_user.name}_vote".to_sym%>
<%= t.select :"#{current_user.name}_vote".to_sym, options_for_select(@votes.map{ |v| [v.your_desired_field,v.id }) %>
<%= t.submit "Submit Vote", class: "btn btn-primary btn-lg" %>
</p>
your_desired_field
应该是vote
的属性,它将成为选项文本。
答案 2 :(得分:0)
您可以将其添加到_form.html.erb
:
<%= f.select "#{current_user.name}_vote".to_sym, options_for_select(@votes) %>