У меня есть модель принадлежности, которая позволяет публиковать объекты, которые будут проданы или арендованы на моем сайте. Недавно я изменил форму, сделав ее многоступенчатой: первая форма запрашивает имя объекта, а если объект продается или сдаётся в аренду, вторая форма запрашивает данные объекта, причем поля в зависимости от выбора пользователя ,Невозможно сохранить tag_list при использовании многоэтапных форм
Я использую is_taggable с Rails 3.0.5, и моя проблема в том, что tag_list никогда не сохраняется в базе данных, так как я переключился на многоэтапную форму (все остальные поля сохранены правильно).
Я следил за Ryan Bates Rails cast # 217.
Раньше я использовал: @belonging.tag_list = params[:belonging][:tag_list]
Так как я пошел от многоступенчатой, я использую: @belonging.tag_list = session[:belonging_params][:tag_list]
Я немного новичок в Rails, так что может быть что-то очевидно, я здесь отсутствует , Я провел весь день и вечер, пытаясь понять, что не так, поэтому любая помощь будет оценена!
Вот «новое» и «создать» действие моего контроллера:
class BelongingsController < ApplicationController
before_filter :authenticate_user!, :except => [:index, :with_tag, :remove_tag]
after_filter :update_tag_cloud, :only => [:create, :update]
def new
@title = "Insert a new product or service"
@user = current_user
session[:belonging_params] ||= {}
session[:belonging_step] = nil
@belonging = @user.belongings.new(session[:belonging_params])
session[:belonging_params][:tag_list] ||= []
@belonging.current_step = session[:belonging_step]
render 'new'
end
def create
session[:belonging_params].deep_merge!(params[:belonging]) if params[:belonging]
@belonging = current_user.belongings.build(session[:belonging_params])
@belonging.current_step = session[:belonging_step]
@belonging.tag_list=session[:belonging_params][:tag_list]
if params[:previous_button]
@belonging.previous_step
render 'new'
elsif params[:cancel_button]
session[:belonging_step] = session[:belonging_params] = nil
redirect_to user_path(current_user)
elsif params[:continue_button]
if @belonging.last_step?
if @belonging.save!
expire_fragment('category_list')
flash[:success] = "New product or service created!"
session[:belonging_step] = session[:belonging_params] = nil
redirect_to belonging_path(@belonging)
else
flash[:error] = "Object could not be saved"
render 'new'
end
else
@belonging.next_step
render 'new'
end
else
render 'new'
end
session[:belonging_step] = @belonging.current_step
end
Много много спасибо за любую подсказку !!