【问题标题】:Insert Query is Wrong on Rails在 Rails 上插入查询错误
【发布时间】:2019-05-05 23:16:24
【问题描述】:

所以我正在尝试学习 Ruby on Rails,并尝试将简单的产品创建代码编写到数据库中,但 Rails 仅使用 created_at 和 updated_at 值执行插入查询。这是我的 products_controller 的创建操作;

def create
    @product = Product.new(params[:product_params])

    @product.save
    redirect_to @product
end

private 
    def product_params
        params.require(:product).permit(:title, :price)
    end

这是我在 products 文件夹下的 new.html.erb ;

<%= form_with scope: :product ,url:products_path, local: true do |form| %>
<p>
 <%= form.text_field :title %>
</p>

<p>
  <%= form.text_field :price %>
</p>

<p>
<%= form.submit %>

这是 Rails 向 Rails Server 执行的 SQL 查询

在 2018-12-04 16:44:52 +0300 开始为 127.0.0.1 发布“/products” ProductsController 处理#create as HTML 参数:{"utf8"=>"✓", "authenticity_token"=>"9Z4aFNpMv+uUPXx+LkHoOtYpWae/8tIOCQ3Jt47AFScp/vVHTWI+G4d6CjHqBz6t5L5UR57I7Gh7bUWog1Dqow==", "product"=>{"title"=>"brokoli", "price "=>"3434"}, "commit"=>"保存产品"} (0.2ms) 开始 ↳ app/controllers/products_controller.rb:8 产品创建 (0.3ms) INSERT INTO products (created_at, updated_at) VALUES ('2018-12-04 13:44:52', '2018-12-04 13:44:52') ↳ app/controllers/products_controller.rb:8 (5.4ms) 提交 ↳ app/controllers/products_controller.rb:8 重定向到http://localhost:3000/products/12 完成 302 Found in 25ms (ActiveRecord: 7.4ms)

【问题讨论】:

    标签: sql ruby-on-rails ruby


    【解决方案1】:

    定义创建 @product = Product.new(product_params) @product.save 重定向到@product 结尾 私人的 def product_params params.require(:product).permit(:title, :price) 结束

    【讨论】:

      【解决方案2】:

      你不这样做

      @product = Product.new(params[:product_params])
      

      你会的

      @product = Product.new(product_params)
      

      product_params 是一种返回白名单参数条目的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多