2016-06-08 2 views
0

Мне нужно сохранить массив в моей модели order.rb.Рельсы 4 Непроизведенные параметры: продукты

Массив: params[:products]

Массив дает мне что-то вроде этого:

[{"'name'"=>"31 DVIE33N - Traditional ", "'id'"=>"2", "'quantity'"=>"1", "'accessory'"=>{"'id'"=>"7", "'name'"=>"31-SK4BLANKD-2"}}] 

Создать действие:

def create 
    @order = Order.new(order_params) 

    respond_to do |format| 
     if @order.save 
     format.html { redirect_to admin_orders_path(@order), notice: 'Order was successfully created.' } 
     format.json { render :show, status: :created, location: @order } 
     else 
     format.html { render :new } 
     format.json { render json: @order.errors, status: :unprocessable_entity } 
     end 
    end 
end 

Мои заказы Params.

private 
    def order_params 
     params.permit({:products=>[], products:[]) 
    end 

Я пытаюсь два различных способа permite продуктов, то почему вы увидите два массива выше

Пожалуйста, обратите внимание, я не использую somethig как:

params.require(:order).permit(:products => []}, :products=>[]) 

, потому что, если я использую, что я получаю ошибку:

ActionController::ParameterMissing - param is missing or the value is empty: order:

спасибо.

ответ

1

Вы должны сделать это таким образом, Rails ...

В моделях/order.rb

class Order < ActiveRecord::Base 
    has_many :products 
    accepts_nested_attributes_for :products, allow_destroy: true 
end 

В orders_controller.rb

def order_params 
    params.require(:order).permit(products_attributes: [:name, :etc]) 
end 

В products_attributes массив можно передать атрибуты продукта, которые вы хотите разрешить.

Вам нужно отправить product_attributes как это: {“order”=>{“products_attributes"=>[{“name”=>”product 1”}, {“name”=>”product 2”}]}}

+0

Hi @Leantraxxx, я добавил relathionship заказать модель. Я не понимаю его «products_attributes». Почему мне нужно поместить это в «product_controller». Извините за эту часть, но я не понимаю. ": listing", "product_attributes: []" Спасибо –

+0

Собственно. Если я использую: params.require в моем «orders_controller», я получаю ошибку: ActionController :: ParameterMissing - параметр отсутствует или значение пуст: order: –

+0

Извините, что это 'orders_controller' – Leantraxxx

 Смежные вопросы

  • Нет связанных вопросов^_^