Я хотел бы создавать страницы для обсуждений на веб-сайте, и на этих страницах обсуждения пользователи могут писать сообщения.Посты должны принадлежать обсуждению и пользователю, а обсуждение - пользователю.
Таким образом, я создал две модели, два контроллера и один частичный для размещения на странице обсуждения обсуждения.Обратите внимание, что перенаправления от контроллеров просто присваиваются root_pages и другим логическим образом, так как я хотел иметь дело с перенаправлениями, как только у меня заработала форма.Я не прикреплял пользовательскую модель, так как она длинная, и я не думал, что это необходимо.
Моя проблема в том, что я не могу заставить контроллер почты назначить правильный идентификатор обсуждения новомусообщение.Я хотел бы, чтобы это было записано, чтобы посты ассоциировались с автором user_id (который работает) и Discussion_id.Я знаю, что использование @ post.discussion_id = @discussion.id не назначит это должным образом, но я проверил @ post.discussion_id = 1, чтобы увидеть, работает ли остальная часть кода (работает).
Как мне изменить настройки форм / контроллеров, чтобы назначить здесь параметр тут:Любая помощь будет принята с благодарностью!
Диспетчер обсуждений:
class DiscussionsController < ApplicationController
def show
@discussion = Discussion.find(params[:id])
@title = @discussion.title
@post = Post.new if signed_in?
end
end
Модель обсуждения:
class Discussion < ActiveRecord::Base
attr_accessible :title, :prompt
belongs_to :user
validates :title, :presence => true, :length => { :within => 5..100 }
validates :prompt, :presence => true, :length => { :within => 5..250 }
validates :user_id, :presence => true
has_many :posts, :dependent => :destroy
default_scope :order => 'discussions.created_at DESC'
end
Post Controller:
class PostsController < ApplicationController
def create
@post = current_user.posts.build(params[:post])
@post.discussion_id = @discussion.id
if @post.save
redirect_to discussion_path
else
redirect_to user_path
end
end
end
Почтовая модель:
class Post < ActiveRecord::Base
attr_accessible :content
validates :content, :presence => true, :length => { :maximum => 10000 }
validates :user_id, :presence => true
validates :discussion_id, :presence => true
belongs_to :user
belongs_to :discussion
default_scope :order => 'posts.created_at ASC'
end
Частично для почтовой формы:
<%= form_for @post do |f| %>
<%= render 'shared/error_messages' %>
<div class="field">
<%= f.text_area :content, :class => "inputform largeinputform round" %>
</div>
<div class="actions">
<%= f.submit "Post", :class => "submitbutton round" %>
</div>
<% end %>