我是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/

10-13 05:38