困っていること
フリマアプリを作成しており、ボタンを押すだけで商品の出品・停止の変化を実現させたいです。
しかし、ボタンを押した後コントローラーへ処理が飛んでおらず、そのままトップページが表示されます。
form_forから生成されるHTMLを検証したところ、formタグが生成されず、inputタグしか生成されておりませんでした。
恐らくそれが原因だと思いますので、記述で間違っている箇所があればご指摘頂きたいです。
View
haml
1= form_for( @product, url: {action: :previewChange}, html: {method: :patch}) do |f| 2 - if @product.status == "出品中" 3 = f.hidden_field :status, value: 3 4 = f.submit "出品を一旦停止する", class: "btn-default btn-gray" 5 - else @product.status == "公開停止中" 6 = f.hidden_field :status, value: 0 7 = f.button "出品を再開する", type: "submit", class: "btn-default btn-red"
Controller
ruby
1 before_action :set_product, only: [:preview, :previewChange] 2 def preview 3 @item_images = @product.item_images 4 end 5 6 def previewChange 7 binding.pry 8 @product.update(status_params) 9 if product.update(status_params) 10 render :preview 11 else 12 render :preview 13 end 14 end 15 private 16 def set_product 17 @product = Product.find(params[:id]) 18 end 19 20 def status_params 21 params.require(:product).permit( 22 :status 23 ) 24 end
Routes
ruby
1root to:'products#index' 2resources :products do 3 member do 4 get :preview, to: 'products#preview', as: 'preview' 5 patch :preview, to: 'products#previewChange', as: 'previewChange' 6 end 7end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。