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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

RubyMine

RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。

Q&A

解決済

2回答

2901閲覧

ルーティングの仕組みがよく分からない

maonmyo

総合スコア36

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

RubyMine

RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。

0グッド

1クリップ

投稿2016/11/01 07:50

編集2016/11/02 06:37

現在、新規登録(new)・更新(edit)機能を作成しています。

流れはどちらも
フォーム入力、送信押下、入力チェック、
成功 → index画面へ遷移し、完了メッセージを表示
or
失敗 → 同画面にてやりなおし
です。

ルーティングは以下のように設定されていました。

ruby

1[routes.rb] 2 3 #トップ 4 get 'user' => 'user#index' 5 6 #新規登録画面 7 get 'user/new' 8 9 #更新画面 10 get 'user/edit' => 'user#edit'

↑このルーティングの設定がよくわかりません。
createとupdateアクションを追加したいのですが表記の仕方がわからず。

html

1 2#divタグ等は省略しています 3 4<form action="○○○" method="post"> 5 6 <input type="text" id="user_id" name="user_id"> 7 <input type="text" id="age" name="age"> 8 <input type="text" id="password" name="password"> 9 <input type="text" id="password_confirm" name="password_confirm"> 10 11<input type="submit" value="送信" onclick="check()"> 12 13 14<script> 15//ここに入力チェックのコード 16function check() { 17・・・ 18} 19</script>

↑formタグのactionに色々入れてみましたが何も変わりません。
method="post"を指定してもpostにならず。

Ruby

1[controller] 2 3def index 4 #ユーザー検索機能があり、検索ボタン押下でユーザーのデータを表示させるアクション 5end 6 7def new 8 @new_user = User.new 9end 10 11def create 12 if (@new_user = User.new(:user_id => "#{params[:user_id]}",:age=> "#{params[:age]}",:password => "#{params[:password]}",)) 13 @new_user.save 14 render 'index' 15 else 16 render 'new' 17 end 18end 19 20def edit 21 #index画面で表示されたデータ一覧の、IDをクリックして更新画面へ遷移 22 #IDからデータを検索してフォームに初期値として表示させる 23 @edit_user = User.where("user_id = ?", params[:user_id]) 24 25 #パスワードの変更する場合 26 if params[:password] 27 @edit_user.update_attributes(:password => "#{params[:password]}", :age => "#{params[:age]}") 28 render action: :index 29 30 #パスワードの変更しない場合 31 else 32 @edit_user.update_attributes(:age => "#{params[:age]}") 33 render action: :edit 34 end 35end

createアクションを追記
new画面からcreateアクションへ流すにはどうしたらよいのでしょうか。

editアクションの中にupdate文を記述していますが、updateアクションを追加し、そこに記述したいと思いますが、
createと同じくわからないです。

どなたか教えてください。

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

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

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

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

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

guest

回答2

0

自己解決

ルーティングの理解は足りていないですが、
現状の問題解決にあたり、自分の書いたルーティングは間違っていなかったようなので
自己解決とさせていただきます。
(ルーティングだけの問題ではなかったと言うことです)

投稿2016/11/07 05:13

maonmyo

総合スコア36

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

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

0

フォーム未入力で送信を押すと、JavaScriptによるalertが表示されますが、延々と出続ける。

check() の中でさらに check() を呼んでいて、その中でcheck()を呼んで、、、、、ぐるぐる回ってしまっているようです

フォームが全て入力済(パスワードも一致)の状態で送信を押すと、フォームがリセットされる。(URLにパラメータは残ってます)

<input> タグの value 属性に適切な値を入れてあげてください。

投稿2016/11/01 08:00

hana-da

総合スコア1728

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

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

maonmyo

2016/11/01 08:29

すみません、プログラミング経験自体浅いもので、、、 もし見当違いの質問になってしまったら申し訳ありません。 if文の条件式は判定されるだけじゃなくて実行もされてしまうんですか。 それだとぐるぐる回ってしまって当然でしたね。 <input> タグの value 属性は初期値の設定という役割だけではないということですか?
hana-da

2016/11/01 08:34

「初期値の設定という役割」のつもりですが、他の役割があるように読めました? どのような役割があるように読めたか教えていただけると解説できるかもしれません。
maonmyo

2016/11/01 08:49

初期値を設定すると登録に辿りつけるのかと思いました。 フォームが消えることだけを回避するのに初期値を設定しろってことなんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問