У меня есть три модели:
category.rb
class Category
include Mongoid::Document
# Relationships
has_many :posts, :autosave => true
has_many :boards, :autosave => true
accepts_nested_attributes_for :boards
accepts_nested_attributes_for :posts
#fields
field :name
#attr
attr_accessible :name
end
Моя модель board.rb
class Board
include Mongoid::Document
# Relationships
has_many :posts, :dependent => :destroy , :autosave => true
accepts_nested_attributes_for :posts
belongs_to :category
#fields
field :name
field :description
#attr
attr_accessible :name, :posts_attributes, :description, :category_id
end
My post.rb
class Post
include Mongoid::Document
# Relationships
belongs_to :board
belongs_to :category
belongs_to :user
#fields
field :content
#attr
attr_accessible :content :board_id, :category_id
end
В моем posts_controller
def create
@post = current_user.posts.new(params[:post])
@board = @post.board
@board.user = current_user
if @board.category_id?
@post.category_id = @board.category_id
end
respond_to do |format|
if @post.save
format.html { redirect_to root_url, notice: 'Post was successfully created.' }
format.json { render json: root_url, status: :created, location: @post }
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
На мой взгляд, новое действие:
<%= form_for(@post) do |f| %>
<%= f.text_area :content %>
<%= f.collection_select :board_id, Board.where(:user_id => current_user.id), :id, :name%>
<%= f.submit :id => "button_submit_pin_edit" %>
<% end %>
Доски в поле выбора могут иметь или не иметь родительскую категорию, уже назначенную.
Я хочу получитьатрибуты из категории (название категории для этого события) в моем виде поста без использования поля выбора или поля ввода.
с этим кодомв posts.controller.rb
if @board.category_id?
@post.category_id = @board.category_id
end
Я вижу в консоли для Post.first ej:
<Post _id: 4f1d96241d41c8280800007c, _type: nil, created_at: 2012-01-23 17:17:24 UTC, user_id: BSON::ObjectId('4f0b19691d41c80d08002b20'), board_id: BSON::ObjectId('4f1455fa1d41c83988000510'), category_id: BSON::ObjectId('4f1c2d811d41c8548e000008'), content: "nuevo post">
Если я пишу:
post = Post.first
и
post.board
Я получаю объектплата в порядке.Это работает нормально.
, но если я напишу:
post.category
Я получу:
=> nil
Я пытаюсь просмотреть новое сообщение добавить скрытое поле:
hidden_field(:category, :name)
Как получить параметры категории объекта?Благодаря