質問編集履歴

2

問題箇所をフォーカス

2019/02/16 05:26

投稿

t1gerkngd0m
t1gerkngd0m

スコア26

test CHANGED
@@ -1 +1 @@
1
- ボタンに値を持せて送信するとトップページへ遷移してしまう
1
+ form_forからformタグが生成されず、ボタン押下時期待した遷移してくれない
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  しかし、ボタンを押した後コントローラーへ処理が飛んでおらず、そのままトップページが表示されます。
8
8
 
9
+ form_forから生成されるHTMLを検証したところ、formタグが生成されず、inputタグしか生成されておりませんでした。
10
+
9
- 点につい、正し挙動を示すためにはどうすれば良いか教授頂きたいです。
11
+ 恐らくそれが原因だと思いますで、記述で間違っている箇所があればご指摘頂きたいです。
10
12
 
11
13
 
12
14
 
@@ -16,13 +18,13 @@
16
18
 
17
19
  ```haml
18
20
 
19
- = form_for @product, url: {action: :previewChange} do |f|
21
+ = form_for( @product, url: {action: :previewChange}, html: {method: :patch}) do |f|
20
22
 
21
23
  - if @product.status == "出品中"
22
24
 
23
25
  = f.hidden_field :status, value: 3
24
26
 
25
- = f.button "出品を一旦停止する", type: "submit", class: "btn-default btn-gray"
27
+ = f.submit "出品を一旦停止する", class: "btn-default btn-gray"
26
28
 
27
29
  - else @product.status == "公開停止中"
28
30
 
@@ -40,43 +42,53 @@
40
42
 
41
43
  ```ruby
42
44
 
43
- def preview
45
+ before_action :set_product, only: [:preview, :previewChange]
44
46
 
45
- @item_images = @product.item_images
47
+ def preview
46
48
 
49
+ @item_images = @product.item_images
50
+
47
- end
51
+ end
48
52
 
49
53
 
50
54
 
51
- def previewChange
55
+ def previewChange
52
56
 
53
- product = Product.new(status_params)
57
+ binding.pry
54
58
 
55
- if product.update(status_params)
59
+ @product.update(status_params)
56
60
 
57
- render :preview
61
+ if product.update(status_params)
58
62
 
59
- else
63
+ render :preview
60
64
 
65
+ else
66
+
61
- render :preview
67
+ render :preview
68
+
69
+ end
62
70
 
63
71
  end
64
72
 
73
+ private
74
+
75
+ def set_product
76
+
77
+ @product = Product.find(params[:id])
78
+
65
- end
79
+ end
66
80
 
67
81
 
68
82
 
69
- private
83
+ def status_params
70
84
 
71
- def status_params
85
+ params.require(:product).permit(
72
86
 
73
- params.require(:product).permit(
87
+ :status
74
88
 
75
- :status
89
+ )
76
90
 
77
- )
78
-
79
- end
91
+ end
80
92
 
81
93
  ```
82
94
 
@@ -94,7 +106,7 @@
94
106
 
95
107
  get :preview, to: 'products#preview', as: 'preview'
96
108
 
97
- patch :preview, to: 'products#previewChange'
109
+ patch :preview, to: 'products#previewChange', as: 'previewChange'
98
110
 
99
111
  end
100
112
 
@@ -102,14 +114,16 @@
102
114
 
103
115
  ```
104
116
 
105
- **起きていこと**
117
+ **生成されHTML**
106
118
 
107
119
  ---
108
120
 
109
- viewから飛ばした値をpreviewChangeで受け取りたいのに、トップページへ遷移してしまっています。
121
+ <input type="hidden" name="_method" value="patch">
110
122
 
111
- 恐らくパスの設定がうまくいっていないからだと思いますが、どのように設定するのが正しいのか不明なままです。
123
+ <input name="utf8" type="hidden" value="✓">
112
124
 
125
+ <input type="hidden" name="authenticity_token" value="xBqknEQpIVhamvQiSpasB+k2BxisQPK2qzRVsLuNit5LTn1i1Y9f+stjsA+q9CgoVdwG8Rndeyegtj+kG3QuPg==">
113
126
 
127
+ <input value="3" type="hidden" name="product[status]" id="product_status">
114
128
 
115
- どうぞよろしくお願いいたしま
129
+ <input type="submit" name="commit" value="出品を一旦停止る" class="btn-default btn-gray" data-disable-with="出品を一旦停止する">

1

文脈の修正

2019/02/16 05:26

投稿

t1gerkngd0m
t1gerkngd0m

スコア26

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ---
4
4
 
5
- フリマアプリを作成しており、ボタンを押すだけで出品・停止遷移を実現させたいです。
5
+ フリマアプリを作成しており、ボタンを押すだけで商品の出品・停止の変化を実現させたいです。
6
6
 
7
7
  しかし、ボタンを押した後コントローラーへ処理が飛んでおらず、そのままトップページが表示されます。
8
8