Rails来自映射数组的3个单选按钮值

时间:2011-05-05 03:16:54

标签: ruby-on-rails-3

更新:此帖中的代码已更改为工作解决方案。

使单选按钮显示映射数组的存储值。

控制器:

@questions = Question.all
@ans = Answer.where(user_id = current_user.id)
@answers = @questions.map { |q| [q, @ans.find_by_question_id(q.id)] }

查看:

<% @answers.each do |q| %>
    <%= q[0].question %> [<%= q[1].id %>] <%= q[1].score %> 
    <% [ 1, 2, 3, 4, 5 ].each do |f| %>
        <%= radio_button_tag q[0].name, f, f == q[1].score %>
    <% end %>
    <br />
<% end %>

2 个答案:

答案 0 :(得分:1)

编辑:oops ...忘记了@ on answers.each。固定

<% @answers.each do |q| %>
  <%= q[0].question %>
  <% [1..5].each do |f| %>
    <%= radio_button_tag 'score', f, (f == q[1].score).to_s %>
  <% end %>
  <br />
<% end %>  

它离我头顶但基本上你必须传递真或假而不是检查的数字。我假设q [1] .score是1到5的数字

答案 1 :(得分:1)

嘿,伙计们。谢谢你的帮助。迈克,你很亲密。有两个问题。首先,将为每个问题的每个按钮分配名称“得分”。对于一个问题,每个按钮的名称必须相同,但需要在下一个问题上进行更改。见下面的q [0] .name。其次,分数是数字,而不是字符串。所以“to_s”导致每个按钮都被检查。由于每组只能检查一个按钮,因此检查每个按钮会导致检查每个按钮的最后一个按钮。 (例如每次检查得分5)

<% @answers.each do |q| %>
    <%= q[0].question %> [<%= q[1].id %>] <%= q[1].score %> 
    <% [ 1, 2, 3, 4, 5 ].each do |f| %>
        <%= radio_button_tag q[0].name, f, f == q[1].score %>
    <% end %>
    <br />
<% end %>