过去6个小时我一直在玩这个,我实在无法解决。我是铁杆上的红宝石新手。我有一个产品,我已经添加了一个购买模型。现在,我希望每个产品旁边都有一个“购买”键,将其添加到我的购买数据库中。这是我的购买控制器:
class PurchasesController < ApplicationController
def new
end
def update
end
def create
@purchase = Purchase.new(purchase_params)
if Purchase.save
redirect_to products_path notice: 'Product bough'
else
redirect_to products_path notice: 'Error!!!'
end
end
private
def purchase_params
params.require(:product).permit(:amount,:product_id)
end
购买按钮:
<td><%= link_to 'Buy',purchases_path(product.attributes), method: :post %></td>
那是在<% @products.each do |product %>
之内。现在我真的想知道如何发送product_id然后将其保存在我的购买数据库中。我一直有各种各样的错误!
像parameter not found: product
到undefined method
允许'for“8”:字符串8 is the product id and
方法保存未定义...`。我想我真的不知道我在这做什么!关于如何手动将数据保存到数据库的一些帮助或教程将不胜感激。 (通过手动我的意思是输入哪个已发布的字段保存为哪个col)
答案 0 :(得分:0)
您应该@purchase.save
,而不是Purchase.save
答案 1 :(得分:0)
这样的事情应该是你的观点。
<% @products.each do |product| %>
<td><%= product.amount %><td>
<td><%= form_for @product, url: {action: "create"}, html: {method: "post"} do |f| %>
<%= f.hidden_field_tag :id,product.id%>
<%= f.hidden_field_tag :amount,product.amount%>
<%= f.submit "Create" %>
<% end %></td>
<% end %>
您的控制器应如下所示:
def create
@purchase = Purchase.new(purchase_params)
if @purchase.save
redirect_to products_path notice: 'Product bough'
else
redirect_to products_path notice: 'Error!!!'
end
end
def purchase_params
params.require(:product).permit(:amount,:id)
end
我不确定您为什么不使用该表单。这是为什么?无论如何这里是一个解决方案。
<td><%= link_to 'Buy',purchases_path(amount: product.amount,id: product.id), method: :post %></td>
这应该有效。试试这个。