ruby-on-rails - 为什么 redirect_to 在创建操作中不起作用?
问题描述
Rails 初学者在这里,不知何故我在创建记录后找不到重定向用户的方法。
我有这个控制器:
def create
@product = Product.new(product_params)
respond_to do |format|
if @product.save
format.html { redirect_to @product, notice: 'Product successfully created' }
else
format.html { render :new, notice: 'Error' }
end
end
end
def product_params
params.require(:product).permit(:name, :description, :price, :quantity, :status, :image)
end
我尝试了一些变体,例如redirect_to product_path(@product)
或删除format
块,但没有任何效果。提交值的模型和表单似乎工作(通过验证,保存记录)。
日志:
Parameters: {"..."}
User Load (0.2ms) SELECT ....
↳ app/controllers/application_controller.rb:15:in 'admin?'
(0.1ms) BEGIN
↳ app/controllers/products_controller.rb:24:in 'block in create'
Product Exists? (0.4ms) SELECT 1 ...
↳ app/controllers/products_controller.rb:24:in 'block in create'
Product Create (3.3ms) INSERT INTO ...
↳ app/controllers/products_controller.rb:24:in 'block in create'
(55.3ms) COMMIT
↳ app/controllers/products_controller.rb:24:in 'block in create'
Redirected to http://localhost:3000/products/4137
Completed 200 OK in 65ms (ActiveRecord: 59.3ms | Allocations: 4974)
有些东西阻止了重定向(更改页面后我仍然有notice
消息),但控制器、表单、模型和日志对我来说看起来还不错。有谁知道这里可能负责什么?任何帮助将不胜感激!
解决方案
如果您form_with
在 Rails 6 中使用帮助程序,那么它们默认是XHR
表单,并且它们需要一个带有js
格式的模板。要使它们响应html
格式,请添加local: true
选项。
<%= form_with(model: @product, local: true) do |f| %>
从 Rails 指南,
:local
- 默认情况下,表单提交是远程且不显眼的 XHR。使用 local: true 禁用远程提交。
更多信息 - form_with 选项
希望有帮助!
推荐阅读
- reactjs - 任何人都有一个很好的反应签名画布教程
- wordpress - 在我的自定义主题中实现 jquery-ias 时遇到问题
- python - 对数据集的所有连接节点进行分组
- python - 错误:使用 jira-python 创建问题时,用户类型的对象不是 JSON 可序列化的
- javascript - 如何从 JSON 添加到 HTML?
- ffmpeg - 如何在 ffmpeg 中指定纯文本字幕
- ios - 具有固定高度/宽度的自定尺寸 UICollectionViewCell
- python - 在 PySide 中异步加载图像
- java - Joda 或 Java 日期和时间 API 中是否有任何本地化常量,如“今天”、“明天”、“昨天”等?
- python - 如何在 Pandas 的大表中更新子表的内容?