3 Stimmen

Erstellen mehrerer Ressourcen mit einem einzigen Modell

Ich habe ein Modell namens UserPrice und ich möchte den Benutzern die Möglichkeit geben, viele der gleichen Ressourcen in einem Formular zu erstellen, indem sie nur die UserPrice Modell.

Erfolg

Arbeitscode: (Dieser Code erstellt eine x-fache Anzahl von user_prices, zeigt aber keine Fehlermeldungen an/bestätigt oder lehnt ab, wenn bestimmte Felder leer sind).

class UserPricesController < ApplicationController

  def new
    @user_prices = Array.new(5) { UserPrice.new }
  end

  def create_multiple
    @user_prices = params[:user_prices].values.collect { |user_price| UserPrice.new(user_price) }
    if @user_prices.all?(&:valid?)
      @user_prices.each(&:save!)
      redirect_to :action => :new, :notice => "Successfully created product."
     else
        redirect_to :back, :notice => "Error."
    end
  end

  resources :user_prices do
    post :create_multiple, :on => :collection
  end

 <%= form_tag create_multiple_user_prices_path, :method => :post do %>
    <% @user_prices.each_with_index do |user_price, index| %>
       <%= fields_for "user_prices[#{index}]", user_price do |up| %>
         <%= render "add_user_price_fields", :f => up %>
       <% end %>
    <% end %>
    <%= submit_tag "Done" %>
 <% end %>

2voto

mbillard Punkte 37218

Das Problem liegt in der Methode Ihres Controllers create_multiple wo Sie nur ein Objekt erstellen.

Versuchen Sie etwas in dieser Art:

def create_multiple
  @user_prices = params[:user_prices].values.collect { |up| UserPrice.new(up) }
  if @user_prices.all?(&:valid?)
    @user_prices.each(&:save!)
    format.html { redirect_to(:back, :notice => 'Successfully added prices.') }
    format.xml { head :ok }
  else
    # ...

Quelle

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X