因此,我尝试学习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
这是我的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 %>
<%end%>
这是Rails查找Rails Server的SQL查询
于2018-12-04 16:44:52 +0300开始为127.0.0.1发布POST“ /产品” 由ProductsController#create处理为HTML 参数:{“ utf8” =>“✓”,“ authenticity_token” =>“ 9Z4aFNpMv + uUPXx + LkHoOtYpWae / 8tIOCQ3Jt47AFScp / vVHTWI + G4d6CjHqBz6t5L5UR57I7Gh7bUWog1Dow”,“” =“”“” “ =>” 3434“},”提交“ =>”保存产品“} (0.2ms)开始 ↳app / controllers / products_controller.rb:8 产品创建(0.3毫秒)插入
products
(created_at
,updated_at
)值('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 25ms内完成302次发现(ActiveRecord:7.4ms)
答案 0 :(得分:2)
你不这样做
@product = Product.new(params[:product_params])
你做
@product = Product.new(product_params)
product_params
是一种返回白名单params条目的方法。
答案 1 :(得分:0)
def创建 @product = Product.new(product_params)@ product.save redirect_to @product 结束 私人的 def product_params params.require(:product).permit(:title,:price) 结束