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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

3370閲覧

RuBy on Rails フォームと送信ボタンの配置

lyzmfeqpxs54

総合スコア237

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/08/14 10:00

編集2017/08/14 10:02

RuBy、Railsともに初心者です。

ページにラベルと入力フォーム、送信ボタンを配置しようとしているのですがうまくいきません。

http://localhost:3000/travels/abcdにアクセスしても
NameError in Travels#abcd
エラーが出てしまいます。エラーには
<%= form_tag(:controller => travels, :action => create) do %>
部分が赤くなっているのでform_tag部分の書き方に問題があるとは思うのですが、解決策をみつけることができず難航しております。

初歩的な質問で申し訳ありませんが、解決策をご教示いただければ幸いです。
よろしくお願いいたします。

app/controllers/concerns/travels_controller.rb class TravelsController < ApplicationController protect_from_forgery def show render plain: "旅行先 = #{params[:dest]}, 人数 = #{params[:num]}人" end def create render plain: "create実行" end def abcd render 'travels/abcd' end end
app/views/layouts/travels/abcd.html.erb <%= form_tag(:controller => travels, :action => create) do %> <div class="field"> <%= label :email, "email" %><br /> <%= text_field :email, class:"hogehoge", size: 25 %> </div> <div class="actions"> <%= submit_tag '登録' %> </div> <% end %>
config/routes.rb Rails.application.routes.draw do # get 'travels/show' # match 'travels/show/:id' => 'travels#show' post "travels/show" => "travels#show" get "travels/form_tag" => "travels#form_tag" get "travels/abcd" => "travels#abcd" # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

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

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

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

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

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

guest

回答1

0

ベストアンサー

travelsは一旦置いておいて、
ソースを見る限り、ルーティングとコントローラの対応が理解できていないように思います。

一旦新しいモデルをscaffoldで作成して、挙動を確かめてみるのがいいと思います。

ご自分で定義されているabcdというアクションは基本的なnewアクションでできることです。

新たにhogesモデルをscaffoldで作成してみてください。

ruby

1rails g scaffold hoges dest:string num:integer email:string

その後migrate(この辺はrailsのバージョンで違うかも)

sh

1rake db:migrate

してから
http://localhost:3000/hoges/new
にアクセスするとお望みのフォーム=>登録(create)が実現できると思います。
いかがでしょう?

投稿2017/08/14 11:03

zooiiooz

総合スコア176

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

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

lyzmfeqpxs54

2017/08/14 11:37

早速のご回答ありがとうございます。こういったデータベースの必要がなさそうなものの場合スキャフォールディング機能は使わないほうが良いと考えたのですがその解釈は間違っていますでしょうか。 データベースを使わずに内容だけを送信してみようと考え、form_tagを使おうとしております。お時間ありましたら、データベースを使わない方法をご教示いただければとても助かります。よろしくお願いいたします。
zooiiooz

2017/08/14 14:20

なるほど、DBを使わずにデータのやりとりを確認したいということですね。 form_tagの第一引数はリンク先なので <%= form_tag('create') do %> とすると、「create実行」が表示されると思います。
lyzmfeqpxs54

2017/08/15 05:04

ご教示いただいた方法で無事解決できました。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問