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.