单选按钮不提交数据
问题描述:
我正在提出一个测验类型的应用程序,并创建了提交答案的表单。它一切正常,question_id和user_id被提交到数据库,但内容永远不会通过。它始终显示为零。我99%肯定,问题是我的形式,所以在这里它是:单选按钮不提交数据
<%= form_for @respond do |f| %>
<%= f.text_field :question_id, value: @q.id, :style => "position:absolute;left:3000px;" %>
<%= f.text_field :user_id, value: current_user.id, :style => "position:absolute;left:3000px;" %>
<% for @ans in Answer.all.where('question_id = ?', @q.id) %>
<%= f.radio_button :content, @ans.content, :type => "radio", :name => "radios", :id => "radio#{@ans.id}"%>
<label for="radio<%= @ans.id %>" class="btn-lg btn-secondary" style="width:100%;background-color:#eaeaea;margin-bottom:20px"><%= @ans.content %></label>
<% end %>
<div class="actions">
<%= f.submit "Submit", :class => "btn-lg btn-primary", :style => "width:100%;margin-top:20px;margin-bottom:20px;" %>
</div>
<% end %>
我可能只是失去了一些东西的少年,但它是超越我在这一点上。任何帮助,将不胜感激!
答
原因是你已经从content
改变单选按钮的名称radios
因此,如果您正在寻找params[:respond][:content]
会造成对nil
,在这里你需要搜索params[:respond][:radios]
。
但是,如果你使用强参数,你的field_name也是内容,那么我建议你不要指定单选按钮的名称。
<%= f.radio_button :content, @ans.content, :type => "radio", :id =>"radio#{@ans.id}"%>
它会自动单选按钮的名称为content
你可以看到它在浏览器中检查元素
感谢
+0
完美!我非常感谢你的帮助,解释是有道理的。谢谢! –
你指定一个'你的单选按钮value'属性? –
您可以在提交表单后粘贴终端的输出吗? – Andy
您是否将此参数添加到强参数中? – Morris