我是Rails的新手。我正在开发一个Web应用程序,用户可以在其中插入鞋子清单。因此,用户输入样式代码,尺寸,价格和数量。我要数量来定义数据库中有多少个条目。因此,如果数量为三,则将为每只鞋分别创建三行。当前,每个表单提交都在数据库中创建一行。
我在shoe_controller中创建的内容:
def create
@shoe = Shoe.new(shoe_params)
respond_to do |format|
if @shoe.save
format.html { redirect_to @shoe, notice: 'Shoe was successfully created.' }
format.json { render :show, status: :created, location: @shoe }
else
format.html { render :new }
format.json { render json: @shoe.errors, status: :unprocessable_entity }
end
end
end
我的_form.html.erb
<%= form_with(model: shoe, local: true) do |form| %>
<% if shoe.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(shoe.errors.count, "error") %> prohibited this shoe from being saved:</h2>
<ul>
<% shoe.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :sku %>
<%= form.text_field :sku %>
</div>
<div class="field">
<%= form.label :size %>
<%= form.text_field :size %>
</div>
<div class="field">
<%= form.label :quantity %>
<%= form.number_field :quantity %>
</div>
<div class="field">
<%= form.label :price %>
<%= form.text_field :price %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我需要进行哪些更改才能获得所需的结果?
谢谢!
最佳答案
@rohit是正确的,因为使用Shoe.create
方法将为您提供所需的东西。但是要实现此目的,您可以将控制器更改为以下内容。我敢肯定有很多更干净的方法可以做到这一点,但是它应该可以为您提供所需的东西。另外,我建议验证shoe_params中的数量为正整数。
def create
@show = Show.new(shoe_params)
# This will create an array of shoes from your params
new_shoes = (1..shoe_params[:quantity]).collect { Shoe.new(shoe_params) }
# Save each record and put the result in an array
success = new_shoes.map(&:save)
if success.all?
# all records saved
else
# maybe @shoe.valid? is false or something else happened
end
end
关于mysql - Rails:如何让用户输入定义记录到数据库中的条目有多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54453544/