Я пытаюсь использовать рельсы вложенных form_for помощника, но я получаю следующее сообщение об ошибке:Рубин на рельсы вложенной модели формы
BlogPage (# 49859550) ожидается, получил Array (# 31117360)
Вот мои объекты модели:
class Blog < ActiveRecord::Base
# Table Configuration
set_table_name "blog"
# Model Configuration
belongs_to :item
has_many :blog_pages
accepts_nested_attributes_for :blog_pages, :allow_destroy => true
end
class BlogPage < ActiveRecord::Base
# Table Configuration
set_table_name "blog_page"
# Model Configuration
belongs_to :blog
end
Вот форма я сгенерировал (слева ненужный HTML):
<% form_for :blog, :url => { :action => :create } do |blog_form| %>
<%= blog_form.text_field :title, :style => "width: 400px" %>
<% blog_form.fields_for :blog_pages do |page_fields| %>
<% @blog.blog_pages.each do |page| %>
<%= page_fields.text_area :content, :style => "width: 100%",
:cols => "10", :rows => "20" %>
<% end %>
<% end %>
<% end %>
Вот параметры, которые передаются в контроллер:
{ "совершить" => "Сохранить", "блог" => { "blog_pages" => { "содержание" => «Это новое содержимое записей блога».}, «title» => «Это новая запись в блоге». «complete» => «1»}, «authenticity_token» => «T1Pr1g9e2AjEMyjtMjLi/ocrDLXzlw6meWoLW5LvFzc = "}
Здесь BlogController с созданным действием, которое выполняется:
class BlogsController < ApplicationController
def new
@blog = Blog.new # This is the line where the error gets thrown.
# Set up a page for the new blog so the view is displayed properly.
@blog.blog_pages[0] = BlogPage.new
@blog.blog_pages[0].page_number = 1
respond_to do |format|
format.html # Goes to the new.html.erb view.
format.xml { render :xml => @blog }
format.js { render :layout => false}
end
end
def create
@blog = Blog.new(params[:blog])
respond_to do |format|
if @blog.save
render :action => :show
else
flash[:notice] = "Error occurred while saving the blog entry."
render :action => :new
end
end
end
end
Если кто-нибудь может мне помочь, я был бы очень признателен. Я все еще довольно новичок в рубине и рельсовом фреймворке и не могу решить эту проблему самостоятельно.
Спасибо.
Вы должны добавить номер строки и прокомментировать код, в котором произошла ошибка. Вы также должны перенаправить, если @ blog.save успешно. То, как это происходит сейчас, обновление браузера может привести к тому, что будут вставлены повторяющиеся записи. требуйте «pp» и используйте «raise @ blog.pretty_inspect», чтобы узнать, какой у вас массив. –
Спасибо. Я добавил некоторые предложения, которые вы рекомендовали. Что добавление требует «pp»? –