Rails:如何在下拉选择列表中获取项目以连接到表单?

时间:2016-09-24 16:03:24

标签: ruby-on-rails

我希望登录用户对某个主题进行投票。

要求用户在文本字段中输入投票正常工作:

<select name=#{current_user.name}_vote">
   <%= @votes.each do |vote| %>
    <option value="<%= vote %>"><%= vote %></option>
   <% end %>
</select>

但是从下拉列表中选择可以改善这一点。

我可以通过以下方式获取列表:

{{1}}

但是我没有找到如何将它连接到表单,所以我得到错误&#34; param丢失或值为空:topic&#34;

我在这方面工作了很长时间没有成功。我是铁路的初学者。如果可以的话请帮忙。谢谢。

3 个答案:

答案 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) %>