form_for dla 2 relacji has_many

Czołem robię testowa apkę i chcę stworzyć form_for który doda mi obiekt do 2 innych modeli.

Relacje wyglądają tak:

Comment:

belongs_to :post
belongs_to :user

Post:

has_many :comments

User:

has_many :comments

Komentarze tworzone są na głównej stronie:

  <% @posts.each do |post| %>
      <%= form_for post.comments.build, url: post_comments_path(post.id) do |f| %>

        <% if user_signed_in? %>
          <strong><%= @user.username %>: </strong>
          <%= f.hidden_field :autor, value: @user.username %>
          <%= f.hidden_field :user_id, value: @user.id %>
          <%= f.text_field :content %>
        <% else %>
          <%= f.label :autor, "Autor: " %>
          <%= f.text_field :autor %><br/>  
          <%= f.label :content, "Treść: " %>
          <%= f.text_field :content %><br/>                
        <% end %>

        <%= f.submit "Dodaj Comment-a :P" %>
      <% end %>
<% end %>

Akcja w pages_controller:

  def home
    @posts = Post.all.order(updated_at: :desc)
    @user = current_user if user_signed_in?
  end

akcja comment create:

  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.new(comment_params)
    if @comment.save
      flash[:success] = "Komentarz Dodano"
      redirect_to root_path
    else
      flash.now[:alert] = "Niedodano Komentarza"
      render 'pages#home'
    end
  end

  private

    def comment_params
      params.require(:comment).permit(:autor,:content, :user_id)
    end

Dodawanie postów idzie fajnie ale kolumna user_id się nie wypełnia, a chciałbym żeby użytkownik mógł zobaczyć swoje komentarze

Ogólnie cel jest taki żeby stworzyć formularz po wypełnieniu którego, będę mógł zastosować post.comments i user.comments i uzyskać przypisane komentarze.

Najlepiej pokaż jeszcze db/schema.rb, kawałek z tymi modelami.

Tak na szybko pisząc, zobacz: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

Skoro user jest zalogowany, i posiada swoją sesję to wystarczy w kontrolerze użyć current_user od devise

@comment.user_id = current_user.id

wtedy wywalasz hiddeny z formularza z info o użytkowniku.

PZDR! :smiley: