2
這是我第一次在這裏提出問題。我嘗試了很多答案,但都沒有解決我的問題。(對不起,我正在努力改進)。在rails中爲參數和嵌套模型分配參數4
Okai,問題如下:我正在做一個電子商店,它有產品。產品必須有一個類別,但不一定是一個子類別。這個想法是,只有創建一個產品,包括類別和子類別名稱作爲參數,rails必須自動創建類別和子類別表的條目。
問題是當我用窗體創建一個產品。當我這樣做,在控制檯中我看到:「不允許的參數:類別,子類別」
這是三種型號:
class Product < ActiveRecord::Base
has_one :subcategory
has_one :category, through: :subcategory
accepts_nested_attributes_for :category, :subcategory
end
class Category < ActiveRecord::Base
belongs_to :product
has_many :subcategories
accepts_nested_attributes_for :subcategories
end
class Subcategory < ActiveRecord::Base
belongs_to :product
belongs_to :category
end
控制器相關部分:
def create
@titulo = "Catálogo Online"
@product = Product.create(product_params)
respond_to do |format|
if @product.save
format.html { redirect_to @product, notice: 'Producto creado.' }
else
format.html { render :new }
end
end
end
...
def product_params
params.require(:product).permit(:name, :description, :price, :stock, :code, category_attributes: [:id, :category, :product_id ], subcategory_attributes: [:id, :subcategory, :category_id, :product_id ])
end
而表格
<%= form_for(@product) do |f| %>
<% if @product.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2>
<ul>
<% @product.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :category %><br>
<%= f.text_field :category %>
</div>
<div class="field">
<%= f.label :subcategory %><br>
<%= f.text_field :subcategory %>
</div>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :code %><br>
<%= f.text_field :code %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :price %><br>
<%= f.number_field :price %>
</div>
<div class="field">
<%= f.label :stock %><br>
<%= f.check_box :stock %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
請,我已經三天有這個問題。我不知道該怎麼辦。謝謝。
謝謝。這是有效的,並且對形式的改進非常有用,但它不完全是我想要的。這個想法是,相同的表單可以爲所有表創建條目。這可能嗎?尊重數據模型:本來我就是這麼說的,但我放棄了它,因爲我意識到做我想要的邏輯更復雜。這是更好的其他數據模型?爲什麼?。我是這方面的初學者,所以所有的幫助都是值得歡迎的。 非常感謝。 –
我不認爲你有任何選擇,只能再看看你的數據模型。是。內聯創建相關模型很複雜!也許首先做一些簡單的事情(分配已經創建的類別),然後一旦你有這個工作,看看如何讓用戶創建更多的類別。我認爲你的子類別設置也會讓事情變得複雜! – stef