我在Rails 4中有一個奇怪的問題,涉及我的一個模型的更新操作。相同的控制器動作,但不同的重定向基於提交的參數/視圖
有2個視圖允許用戶編輯產品:標準edit_product
視圖和其他準系統edit_product_images
視圖可從桌面應用程序訪問,並且不提供任何其他應用程序佈局。
兩個視圖在提交表單時都會導致更新操作。但是,儘管我希望完整的Web瀏覽器視圖在保存後返回到產品#show view,但是一旦更新操作完成,分拆後的版本應該只會重新加載edit_product_images
頁面。
當然,我可以創建另一個與現有更新操作非常相似的操作,但只是使用不同的重定向。但是,這似乎非常多餘。相反,我打算在提交edit_product_images
表單時通過隱藏字段傳遞附加的:same_page => 1
參數。
在我的更新動作,我有以下的代碼,以檢查是否params[:same_page] == "1"
是真的,此更新動作:
products_controller.rb
def update
respond_to do |format|
if @product.update(product_params)
format.html do
if params[:same_page] == "1"
render action: "edit_product_images", layout: false
else
redirect_to @product, notice: 'Product was successfully updated.'
end
end
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
但不幸的是,如果params[:same_page] == 1
條款似乎總是返回假,以便我只是重定向到product#show
視圖。我檢查了日誌,並在表單提交時傳遞參數。爲什麼我的if語句失敗?
我在這裏錯過了什麼?有沒有更好的方式來處理這個功能?畢竟,我只是想要基於原始視圖的不同重定向,動作是由觸發的 - 附加參數似乎是實現此目的的最簡單方法。儘管如此,我仍然接受更好的解決方
感謝您的幫助。
您可以共享您在'edit_product_images'頁面中提交表單時生成的服務器日誌。 –