現在、新規登録(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と同じくわからないです。
どなたか教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。