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

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

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

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

Q&A

解決済

1回答

814閲覧

元いたページにリダイレクトされるようにしたい

harukome

総合スコア26

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/04/02 09:38

編集2022/04/02 09:50

前提

ruby on railsで過去の出来事について投稿するSNSのようなものを製作しています。
postテーブルとcharacterテーブルがcharacters_postテーブルを介して多対多の関係になっています。

説明不足な部分があるかもしれないので、不明点がありましたら質問して頂けますと幸いです。

実現したいこと

  • postの編集画面で新しくcharacterを追加した際に、元いた編集画面にリダイレクトされるようにしたいです。

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

コマンドプロンプトのエラー画面です。

SyntaxError (C:/Users/konku/Desktop/tests/test_life/app/controllers/characters_controller.rb:22: syntax error, unexpected tLABEL, expecting `end' ...ck_location: root_path) notice: '編集できました' ... ^~~~~~~ C:/Users/konku/Desktop/tests/test_life/app/controllers/characters_controller.rb:24: syntax error, unexpected ',', expecting `end' ...(fallback_location: root_path), notice: '編集できませ... ... ^ ): app/controllers/characters_controller.rb:22: syntax error, unexpected tLABEL, expecting `end' app/controllers/characters_controller.rb:24: syntax error, unexpected ',', expecting `end' app/controllers/characters_controller.rb:22: syntax error, unexpected tLABEL, expecting `end' app/controllers/characters_controller.rb:24: syntax error, unexpected ',', expecting `end' app/controllers/characters_controller.rb:22: syntax error, unexpected tLABEL, expecting `end' app/controllers/characters_controller.rb:24: syntax error, unexpected ',', expecting `end'

該当のソースコード

部分的に抜粋しています。
①編集画面のview

posts/edit.html.erb

1<h3>編集</h3> 2<%= form_for @post do |t| %> 3 <%= render 'layouts/error_messages', model: t.object %> 4 <div class="post_field"> 5 <p> 6 <%= t.label :'いつの出来事?' %> 7 <%= t.date_select :date %> 8 </p> 9 10 <p> 11 <%= t.label :'タイトル' %> 12 <%= t.text_field :title, :size => 140 %> 13 </p> 14 15 <p> 16 <%= t.label :'登場人物を選択' %> 17 <%= t.collection_check_boxes :character_ids, Character.all, :id, :name %> 18 </p> 19 20 21 22 <p> 23 <%= t.label :'振り返ろうと思った理由' %> 24 <%= t.text_field :reason, :size => 140 %> 25 </p> 26 27 <p> 28 <%= t.label :'できごとの詳細' %> 29 <%= t.text_field :experiment, :size => 140 %> 30 </p> 31 32 <p> 33 <%= t.label :'書いてみた感想' %> 34 <%= t.text_field :review, :size => 140 %> 35 </p> 36 37 <p> 38 <%= t.label :'公開範囲の設定' %> 39 <%= t.select :setting, [["公開", true], ["非公開", false]], include_blank: "選択して下さい" %> 40 </p> 41 </div> 42 43 <%= t.submit "編集を完了する" %> 44<% end %> 45 46 <p>登場人物を追加する</p> 47 <%= form_for @character, url: character_from_edit_posts_path do |f| %> 48 <%= render 'layouts/error_messages', model: f.object %> 49 <div class="character_field"> 50 <%= f.label :'名前' %> 51 <%= f.text_field :name, :size => 140 %> 52 </div> 53 <%= f.submit "登録する" %> 54 <% end %>

②postコントローラー

posts_controller.rb

1 def edit 2 @post = Post.find(params[:id]) 3 @character = Character.new 4 end

③characterコントローラー

characters_controller.rb

1 def create_from_edit 2 character = Character.new(character_params) 3 character.user_id = current_user.id 4 if character.save 5 redirect_back(fallback_location: root_path) notice: '編集できました' 6 else 7 redirect_back(fallback_location: root_path), notice: '編集できませんでした' 8 end 9 end

④routes

routes.rb

1 resources :posts do 2 collection do 3 post :character_from_new, controller: 'characters', action: 'create_from_new' 4 post :character_from_edit, controller: 'characters', action: 'create_from_edit' 5 get :index_private, controller: 'posts', action: 'index_private' 6 end 7 member do 8 get :show_private, controller: 'posts', action: 'show_private' 9 end 10 end

試したこと

編集しているpostのpost_idをどこかで受け渡す必要があるのかなと考えたのですが、どこに何を追加すべきなのか分からず行き詰まってしまいました。

参考サイト

https://nanayaku.com/rails-redirect_to-redirect_back/

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

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

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

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

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

winterboum

2022/04/02 09:43

エラーメッセージ は省略しないで全部載せてください
harukome

2022/04/02 09:51

先ほど、コマンドプロンプトに出ていたエラーメッセージを追記いたしました!
guest

回答1

0

ベストアンサー

redirect_back に詳しくはないので、引数が正しいかどうか、は判断できません。

文法エラーは、
redirect_back(fallback_location: root_path, notice: '編集できました')

redirect_back fallback_location: root_path, notice: '編集できました'

投稿2022/04/02 10:00

winterboum

総合スコア23347

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

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

harukome

2022/04/02 10:08

うまく編集画面に戻ることができました! いつもありがとうございます。 もっと自分でエラー解決できるように頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問