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

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

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

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

Q&A

解決済

1回答

1944閲覧

ruby on rails redirect_to @hogeの挙動について

hoge_huga

総合スコア13

Ruby on Rails

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

0グッド

0クリップ

投稿2016/02/06 21:34

編集2016/02/07 04:38

ruby on rails で開発を進めるうちに、コントローラの見通しをよくするため、管理側とユーザー側でフォルダ分けしたいと考えています。
クラス名やルートの設定は変更したのですが、新規作成
後のリダイレクトで下記のエラーが発生します。
NoMethodError in Admin::HogeController#create
undefined method `hoge_url' for #Admin::HogeController:0x007fa53fa80188
原因はviews/admin/hoge/_form.html.erbの
26 def create
27 @hoge = TempAnime.new(temp_anime_params)
28
29 respond_to do |format|
30 if @hoge.save
31 format.html { redirect_to @hoge, notice: 'Temp anime was successfully created.' }
32 format.json { render :show, status: :created, location: @hoge }
33 else
34 format.html { render :new }
35 format.json { render json: @hoge.errors, status: :unprocessable_entity }
36 end
37 end
38 end
この31行目redirect_to @hogeを
redirect_to admin_hoge_url(id:@hoge.id)
とすれば正常に動くのですが、redirect_to @hodeで何故hoge_urlメソッドを実行しようとするのでしょうか?

できれば
redirect_to @hodeでadmin_hoge_url(id:@hoge.id)、
link_to @hogeでadmin_hode_path(@hoge.id)に遷移するように設定したいです。

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

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

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

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

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

miyamiya

2016/02/07 04:35

質問内容が編集で変わっています。前の文章に戻して、編集後の質問を新規質問としていただけませんか。
hoge_huga

2016/02/07 04:40

申し訳ありません。 本文は復元できたので、戻しました。タイトルが若干変わってしまっているかもしれません。
miyamiya

2016/02/07 04:42

修正ありがとうございます。
guest

回答1

0

ベストアンサー

redirect_to の引数には移動先を記述します。
@hogeのモデルを渡した際には、モデルのクラス名から移動先を推測しようとします。
@hogeは モデルクラス名+_url で移動先に変換されます。

推測してもらうようにするには、
redirect_to [:admin,@hoge]で指定するか、
Admin::Hoge モデルを作成する必要があるかと思います。

投稿2016/02/07 04:23

miyamiya

総合スコア691

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

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

hoge_huga

2016/02/07 04:34

新しく別の質問をしようとしたら間違って変更してしまいました。 なるほど、redirect_to [:admin,@hoge]でいいんですね。 Admin::Hoge モデルはユーザー側とAdmin側で同じモデルを使いたいので今回は作成できなさそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問