質問編集履歴
2
前回間違って修正したため
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby on rails
|
1
|
+
ruby on rails redirect_to @hogeの挙動について
|
test
CHANGED
@@ -1,47 +1,51 @@
|
|
1
|
-
ruby on rails で
|
1
|
+
ruby on rails で開発を進めるうちに、コントローラの見通しをよくするため、管理側とユーザー側でフォルダ分けしたいと考えています。
|
2
|
+
|
3
|
+
クラス名やルートの設定は変更したのですが、新規作成
|
4
|
+
|
5
|
+
後のリダイレクトで下記のエラーが発生します。
|
6
|
+
|
7
|
+
NoMethodError in Admin::HogeController#create
|
8
|
+
|
9
|
+
undefined method `hoge_url' for #<Admin::HogeController:0x007fa53fa80188>
|
10
|
+
|
11
|
+
原因はviews/admin/hoge/_form.html.erbの
|
12
|
+
|
13
|
+
26 def create
|
14
|
+
|
15
|
+
27 @hoge = TempAnime.new(temp_anime_params)
|
16
|
+
|
17
|
+
28
|
18
|
+
|
19
|
+
29 respond_to do |format|
|
20
|
+
|
21
|
+
30 if @hoge.save
|
22
|
+
|
23
|
+
31 format.html { redirect_to @hoge, notice: 'Temp anime was successfully created.' }
|
24
|
+
|
25
|
+
32 format.json { render :show, status: :created, location: @hoge }
|
26
|
+
|
27
|
+
33 else
|
28
|
+
|
29
|
+
34 format.html { render :new }
|
30
|
+
|
31
|
+
35 format.json { render json: @hoge.errors, status: :unprocessable_entity }
|
32
|
+
|
33
|
+
36 end
|
34
|
+
|
35
|
+
37 end
|
36
|
+
|
37
|
+
38 end
|
38
|
+
|
39
|
+
この31行目redirect_to @hogeを
|
40
|
+
|
41
|
+
redirect_to admin_hoge_url(id:@hoge.id)
|
42
|
+
|
43
|
+
とすれば正常に動くのですが、redirect_to @hodeで何故hoge_urlメソッドを実行しようとするのでしょうか?
|
2
44
|
|
3
45
|
|
4
46
|
|
5
|
-
|
47
|
+
できれば
|
6
48
|
|
7
|
-
|
49
|
+
redirect_to @hodeでadmin_hoge_url(id:@hoge.id)、
|
8
50
|
|
9
|
-
|
51
|
+
link_to @hogeでadmin_hode_path(@hoge.id)に遷移するように設定したいです。
|
10
|
-
|
11
|
-
3 end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
commentモデル
|
16
|
-
|
17
|
-
1 class Comment < ActiveRecord::Base
|
18
|
-
|
19
|
-
2 belongs_to :users
|
20
|
-
|
21
|
-
4 end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
views/comment/index.html.erb
|
26
|
-
|
27
|
-
8 <% @comments.each do |comment| %>
|
28
|
-
|
29
|
-
9 <div class="col-md-6">
|
30
|
-
|
31
|
-
10 <% unless comment.users.nil? %>
|
32
|
-
|
33
|
-
11 <div class="col-md-12">ユーザー名:<%= comment.users.name %></div>
|
34
|
-
|
35
|
-
12 <% end %>
|
36
|
-
|
37
|
-
13 <div class="col-md-12">コメント<%= comment.name %></div>
|
38
|
-
|
39
|
-
14 </div>
|
40
|
-
|
41
|
-
15 <% end %>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
こんな風にviewからコメントを投稿したユーザー名を取得したいのですが、comment.usersがnilになって取得できません。
|
46
|
-
|
47
|
-
どうすれば良いのでしょうか?
|
1
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby on rails
|
1
|
+
ruby on rails 1対多モデルで使えるメソッドについて
|
test
CHANGED
@@ -1,51 +1,47 @@
|
|
1
|
-
ruby on rails で
|
1
|
+
ruby on rails で1対多のモデルがあるのですが、多から1をどうすれば参照できるのか悩んでいます。
|
2
|
-
|
3
|
-
クラス名やルートの設定は変更したのですが、新規作成
|
4
|
-
|
5
|
-
後のリダイレクトで下記のエラーが発生します。
|
6
|
-
|
7
|
-
NoMethodError in Admin::HogeController#create
|
8
|
-
|
9
|
-
undefined method `hoge_url' for #<Admin::HogeController:0x007fa53fa80188>
|
10
|
-
|
11
|
-
原因はviews/admin/hoge/_form.html.erbの
|
12
|
-
|
13
|
-
26 def create
|
14
|
-
|
15
|
-
27 @hoge = TempAnime.new(temp_anime_params)
|
16
|
-
|
17
|
-
28
|
18
|
-
|
19
|
-
29 respond_to do |format|
|
20
|
-
|
21
|
-
30 if @hoge.save
|
22
|
-
|
23
|
-
31 format.html { redirect_to @hoge, notice: 'Temp anime was successfully created.' }
|
24
|
-
|
25
|
-
32 format.json { render :show, status: :created, location: @hoge }
|
26
|
-
|
27
|
-
33 else
|
28
|
-
|
29
|
-
34 format.html { render :new }
|
30
|
-
|
31
|
-
35 format.json { render json: @hoge.errors, status: :unprocessable_entity }
|
32
|
-
|
33
|
-
36 end
|
34
|
-
|
35
|
-
37 end
|
36
|
-
|
37
|
-
38 end
|
38
|
-
|
39
|
-
この31行目redirect_to @hogeを
|
40
|
-
|
41
|
-
redirect_to admin_hoge_url(id:@hoge.id)
|
42
|
-
|
43
|
-
とすれば正常に動くのですが、redirect_to @hodeで何故hoge_urlメソッドを実行しようとするのでしょうか?
|
44
2
|
|
45
3
|
|
46
4
|
|
47
|
-
|
5
|
+
userモデル
|
48
6
|
|
49
|
-
|
7
|
+
1 class User < ActiveRecord::Base
|
50
8
|
|
51
|
-
|
9
|
+
2 has_many:comments,:dependent => :destroy
|
10
|
+
|
11
|
+
3 end
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
commentモデル
|
16
|
+
|
17
|
+
1 class Comment < ActiveRecord::Base
|
18
|
+
|
19
|
+
2 belongs_to :users
|
20
|
+
|
21
|
+
4 end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
views/comment/index.html.erb
|
26
|
+
|
27
|
+
8 <% @comments.each do |comment| %>
|
28
|
+
|
29
|
+
9 <div class="col-md-6">
|
30
|
+
|
31
|
+
10 <% unless comment.users.nil? %>
|
32
|
+
|
33
|
+
11 <div class="col-md-12">ユーザー名:<%= comment.users.name %></div>
|
34
|
+
|
35
|
+
12 <% end %>
|
36
|
+
|
37
|
+
13 <div class="col-md-12">コメント<%= comment.name %></div>
|
38
|
+
|
39
|
+
14 </div>
|
40
|
+
|
41
|
+
15 <% end %>
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
こんな風にviewからコメントを投稿したユーザー名を取得したいのですが、comment.usersがnilになって取得できません。
|
46
|
+
|
47
|
+
どうすれば良いのでしょうか?
|