回答編集履歴

5

タイトルを付けました。

2020/07/25 07:08

投稿

DelphiumG
DelphiumG

スコア3

test CHANGED
@@ -1,4 +1,4 @@
1
- ###一部修正しました
1
+ ###一部修正しました(2)
2
2
 
3
3
 
4
4
 

4

underscoreを削除

2020/07/25 07:08

投稿

DelphiumG
DelphiumG

スコア3

test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  今回のようにnamespace使用時にcontroller_nameでは"top"のみが返るのでnamespaceまで取得できるようにcontroller_pathに変更しました。
6
+
7
+ この場合underscoreも不要になりますので削除いたしました。
6
8
 
7
9
 
8
10
 
@@ -26,7 +28,7 @@
26
28
 
27
29
  def set_layout
28
30
 
29
- if controller_path.underscore.match(%r{\A(staff|admin|customer)/})#訂正箇所
31
+ if controller_path.match(%r{\A(staff|admin|customer)/})#訂正箇所
30
32
 
31
33
  Regexp.last_match[1]
32
34
 

3

byebugを削除

2020/07/25 07:04

投稿

DelphiumG
DelphiumG

スコア3

test CHANGED
@@ -26,19 +26,13 @@
26
26
 
27
27
  def set_layout
28
28
 
29
- byebug
30
-
31
29
  if controller_path.underscore.match(%r{\A(staff|admin|customer)/})#訂正箇所
32
30
 
33
31
  Regexp.last_match[1]
34
32
 
35
- byebug
36
-
37
33
  else
38
34
 
39
35
  "customer"
40
-
41
- byebug
42
36
 
43
37
  end
44
38
 

2

(訂正)今回のようにnamespace使用時にcontroller_nameでは"top"のみが返るのでcontroller_pathに変更

2020/07/25 03:18

投稿

DelphiumG
DelphiumG

スコア3

test CHANGED
@@ -1 +1,49 @@
1
+ ###一部修正しました
2
+
3
+
4
+
5
+ 今回のようにnamespace使用時にcontroller_nameでは"top"のみが返るのでnamespaceまで取得できるようにcontroller_pathに変更しました。
6
+
7
+
8
+
9
+ **(原因)**
10
+
11
+  コントローラの名前はcontroller_name で取得できますが namespace までは取得できないので、Staff::TopController の場合も Admin::TopController の場合も同じ top が返ってくる。
12
+
13
+
14
+
15
+ **(訂正後)**
16
+
17
+ ```
18
+
19
+ class ApplicationController < ActionController::Base
20
+
21
+
22
+
23
+ layout :set_layout
24
+
25
+ private
26
+
27
+ def set_layout
28
+
29
+ byebug
30
+
31
+ if controller_path.underscore.match(%r{\A(staff|admin|customer)/})#訂正箇所
32
+
1
- ※解決内容を2重投稿してしましましたのでこちらは削除しました。
33
+ Regexp.last_match[1]
34
+
35
+ byebug
36
+
37
+ else
38
+
39
+ "customer"
40
+
41
+ byebug
42
+
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ ```

1

同じ内容を2回 投稿してしまったため、こちらの内容を削除

2020/07/25 03:14

投稿

DelphiumG
DelphiumG

スコア3

test CHANGED
@@ -1,41 +1 @@
1
- unhappychoice様に提案いただいたコードそのままだと下記のエラーが発生いたしましたので
2
-
3
-
4
-
5
- ![イメージ説明](ed53e414ef3597078cc441de59c5aa23.jpeg)
6
-
7
-
8
-
9
- 下記のように
10
-
11
- controller → controller_name
12
-
13
- に変更したろエラーが完全に解消いたしました。
1
+ ※解決内容を2重投稿てしましましのでちらは削除しました。
14
-
15
- ```
16
-
17
- class ApplicationController < ActionController::Base
18
-
19
-
20
-
21
- layout :set_layout
22
-
23
- private
24
-
25
- def set_layout
26
-
27
- if controller_name.underscore.match(%r{\A(staff|admin|customer)/})
28
-
29
- Regexp.last_match[1]
30
-
31
- else
32
-
33
- "customer"
34
-
35
- end
36
-
37
- end
38
-
39
- end
40
-
41
- ```