我一直在研究这个问题超过3天。 := [
我正在尝试获取从jQuery传递的值。我的视图代码, application.js和controller如下。
视图:
<%= form_tag update_result_answers_path, :remote => true do %>
<% @answers.each do |q| %>
<%= q[0].question %>
<% [ 1, 2, 3, 4, 5 ].each do |f| %>
<%= radio_button_tag q[1].id, f, f == q[1].score, :class => 'submittable' %>
<% end %>
<% end %>
<% end %>
的application.js:
$('.submittable').live
('change', function()
{
$(this).parents('form:first').submit();
return false;
}
);
控制器:
def update_result
@answ = Answer.where(id = name)
@answ.update_attributes params[:score]
end
在运行rails服务器的控制台窗口中,单击单选按钮时会出现以下情况:
Parameters: {"authenticity_token"=>..., "155"=>"2"}
我将单选按钮设置为答案记录的id(参见视图中的q [1] .id)。因此单选按钮组的名称(也是答案记录的id)是“155”。答案是“2”。 Params [:id]不捕获id,所以我在控制器中更改为“@answ = Answer.where(id = name)”并得到以下错误:
"undefined local variable or method `name'"
如何更改控制器以获取单选按钮组的名称和值?
感谢。
答案 0 :(得分:1)
我建议使用其他级别的嵌套 - 这样您就可以将Answers与其他表单参数分开。
HTML
<%= form_tag update_result_answers_path, :remote => true do %>
<% @answers.each do |q| %>
<%= q[0].question %>
<% [ 1, 2, 3, 4, 5 ].each do |f| %>
<% if f == q[1].score
chk="checked='checked'"
else
chk=""
end %>
<input "<%= chk %>" class="submittable" name="answer[<%=q[1].id%>]" type="radio" value="<%= f %>" />
<% end %>
<% end %>
<% end %>
RUBY
def update_result
params[:answer].each_pair do |key,value|
@ans = Answer.find(key.to_i)
@ans.update_attributes(:score => value)
end
end
我对Rails视图助手并不熟悉,我的解决方案可能只有2.3-ish。