質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

Q&A

解決済

1回答

3384閲覧

railsでform_tagの中に複数のラジオボタンを作りたいです

WlNDY

総合スコア5

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

1グッド

1クリップ

投稿2020/04/09 07:30

前提・実現したいこと

railsでform_tagの中に複数のラジオボタンを作りたいです。
(現在、form_tagの中にテキストデータを入力する入力フォームを作成したのですが、1つの送信ボタンでラジオボタンの情報も送信したいので)

発生している問題・エラーメッセージ

以下のようなエラーが出てしまい、ページが表示できない状態です、、、、

NameError in Posts#new Showing /home/ec2-user/environment/test/hello/app/views/posts/new.html.erb where line #29 raised: undefined local variable or method `f' for #<#<Class:0x00007f47806a2b78>:0x00007f47764b5e28> Extracted source (around line #29): 27 <span class="room-type">部屋の有無</span><br> 28 <div class="radio-inline"> 30           <%= f.radio_button :share, :今住んでる部屋をシェアしたい, checked: "checked" %> 31           <%= f.label :今住んでる部屋をシェアしたい, class: "share_type_label" %> 32          </div>

該当のソースコード

Ruby

1ファイル名:posts_controller.rb 2class PostsController < ApplicationController 3def new 4 @post = Post.new 5 end 6 7 def create 8 @post = Post.new( 9 content: params[:content], 10 detail: params[:detail], 11 user_id: @current_user.id 12 ) 13 if @post.save 14 flash[:notice] = "投稿を作成しました" 15 redirect_to("/posts/index") 16 else 17 render("/posts/new") 18 end 19end 20---------------------------------------------------------------------------------------------------- 21ファイル名:new.html.erb 22<%= form_tag("/posts/create") do %> 23 <form action="#" method="post"> 24 <table border="1"> 25 <tr> 26 <th>タイトル</th> 27 <td><textarea name="content" class="title-textarea"><%= @post.content %></textarea></td> 28 </tr> 29 <tr> 30 <th>部屋の有無</th> 31 <td> 32 <div class="field"> 33 <span class="room-type">部屋の有無</span><br> 34 <div class="radio-inline"> 35 <%= f.radio_button :share, :今住んでる部屋をシェアしたい, checked: "checked" %> 36 <%= f.label :今住んでる部屋をシェアしたい, class: "share_type_label" %> 37 </div> 38 <div class="radio-inline"> 39 <%= f.radio_button :share, :相手の部屋に住みたい %> 40 <%= f.label :相手の部屋に住みたい, class: "share_type_label" %> 41 </div> 42 <div class="radio-inline"> 43 <%= f.radio_button :share, :一緒にこれから探したい %> 44 <%= f.label :一緒にこれから探したい, class: "share_type_label" %> 45 </div> 46 </div> 47 </td> 48 </table> 49 <input type="submit" value="送信" class="btn-square"> 50 </form> 51 <% end %> 52---------------------------------------------------------------------------------------------------- 53ファイル名:routes.rb 54Rails.application.routes.draw do 55 post "posts/create" => "posts#create" 56end 57---------------------------------------------------------------------------------------------------- 58ファイル名:post.rb 59class Post < ApplicationRecord 60 validates :content, {presence: true, length: {maximum: 100}} 61 validates :user_id, {presence: true} 62 63 def user 64 return User.find_by(id: self.user_id) 65 end 66 67 enum share_type: {今住んでる部屋をシェアしたい:1, 相手の部屋に住みたい:2, 一緒にこれから探したい:3} 68end 69

試したこと

postsテーブルにinteger型のカラムを追加しました。
カラム名はshareです
ググりまくったのですがわかりませんでした。
初学者のためとんちんかんなことを書いているとは思うのですが、どうかお助けください、、、、

補足情報(FW/ツールのバージョンなど)

clooud9で作っています
rubyのバージョンは2.6.3です

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずエラーは、fという変数が定義されていないということです。
エラーをなくすためには、下記のようにしていただくと良いかと思います。
<%= form_tag("/posts/create") do %><%= form_tag("/posts/create") do |f|%>

ただ現状の書き方だと<form>タグの中に<form>タグを設定している形になっています。
(Chromeの検証などで確認いただくとわかるかと思います。)

Ruby

1<%= form_tag("/posts/create") do %> 2 <form action="#" method="post"> 3 : 4 </form> 5<% end %>

せっかくなのでこちらで書き方を勉強いただくと良いかと思います。
https://www.sejuku.net/blog/29083

投稿2020/04/09 09:04

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問