Рельсы с драгоценным камнем Wicked. Данные не будут обновляться

Я использую Wicked gem для создания объекта в несколько шагов. Вроде все работало нормально, пока не понял, что данные не сохраняются. Я заметил, что он не сохранялся, когда url: wizard_path присутствовал в конструкторе форм. Когда этого нет, данные сохраняются просто отлично, независимо от того, на каком шаге я нахожусь. Вот как выглядит мой контроллер для построителя объектов:

class Bids::BuildController < ApplicationController
  include Wicked::Wizard

  steps :intro, :problems, :solutions, :pricing

  def show
    @bid = Bid.find(params[:bid_id])
    render_wizard
  end

  def create
    @bid = Bid.new(bid_params)
    redirect_to wizard_path(steps.first, :bid_id => @bid.id)
  end

  def update
    @bid = Bid.find(params[:bid_id])
    params[:bid][:status] = 'active' if step == steps.last
    @bid.attributes = params[:bid].permit(:bid_attribute)
    render_wizard @bid
  end

  # GET /bids/new
  def new
    @bid = Bid.new
    redirect_to wizard_path(steps.first, :bid_id => @bid.id)
  end

end

person jordan    schedule 18.04.2014    source источник
comment
Можете ли вы проверить свой журнал на наличие ошибок? Я предполагаю, что вам нужно внести параметры в белый список. Проверьте свой журнал на наличие ошибки запрещенного атрибута   -  person Monideep    schedule 18.04.2014
comment
@deep Я получил ошибку в журналах. Недопустимые параметры. Что такое параметры белого списка?   -  person jordan    schedule 18.04.2014
comment
@deep В моем контроллере сборки у меня есть это .permit(:fields) для моей модели ставок. Но нужно ли мне это в указанном выше контроллере (bids/build_controller.rb)?   -  person jordan    schedule 18.04.2014
comment
Добавьте частный метод, такой как def bid_params, и внутри метода добавьте params.require(:bid).permit(:status, :attribute_1, :atribute_2). Обратите внимание, что вам нужно разрешить все атрибуты, которые вы получаете через форму, а затем просто используйте @bid.attributes = bid_params   -  person Monideep    schedule 18.04.2014
comment
Подробнее о сильных параметрах читайте здесь edgeapi.rubyonrails.org/classes/ActionController/   -  person Monideep    schedule 18.04.2014


Ответы (1)


Вы упомянули в своем комментарии, что разрешаете параметры в контроллере ставок. Добавьте их в свой контроллер сборки. Поскольку вы создаете свой объект в этом контроллере, он должен иметь доступ к разрешенным параметрам.

Добавлять:

def build_params
  params.require(:bid).permit(:param_1,:param_2,:param_3,:etc)
end

к вашему bids/build_controller.rb

person jordan    schedule 04.06.2014