1

フォームからラジオボタンの値を取得しようとしています。

<%= form_for Text.new, remote: true do |f| %>
<%= f.radio_button :is_code, false %>
<%= f.text_area(:content, :size => '50x10', :class=>'input_text')%>
<%= f.submit "Send", :class=>'input_send' %>
<% end %>

コントローラでパラメータを確認すると、次のようになります。

  def create
    response.headers["Content-Type"] = "text/javascript"
    attributes = params.require(:text).permit(:content, :name, :is_code)
    attributes[:name]=current_user.name
    Rails.logger.info attributes[:is_code]
    attributes[:content]='code was given' if attributes[:is_code]==true
    @message = Text.create(attributes)
  end

ラジオボタンがクリックされない場合、取得する値はnullになります。(デフォルト値を指定したのに、なぜこれがnullになるのですか?)

ラジオボタンがクリックされた場合、Railsロガーは私にfalseを与えます。

false/trueではなくnull/falseを切り替えています。何か案は?

4

1 に答える 1

1

ドキュメントに記載されているように、3番目のパラメーターはHTMLオブジェクトの値です。http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-radio_button

したがって、次のように、trueに設定する必要があると思います。

<%= f.radio_button :is_code, true %>

次に、チェックされていない場合はfalse/null値を取得します。ラジオをチェックするのではなく、true値を取得します。

于 2013-02-18T12:18:07.460 に答える