单选按钮不提交数据

问题描述:

我正在提出一个测验类型的应用程序,并创建了提交答案的表单。它一切正常,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 %> 

我可能只是失去了一些东西的少年,但它是超越我在这一点上。任何帮助,将不胜感激!

+1

你指定一个'你的单选按钮value'属性? –

+0

您可以在提交表单后粘贴终端的输出吗? – Andy

+0

您是否将此参数添加到强参数中? – Morris

原因是你已经从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

完美!我非常感谢你的帮助,解释是有道理的。谢谢! –