В ответ на предыдущий вопрос мне нужно решить несколько вопросов, прежде чем у меня появится форма комментария, которая будет безопасно отображаться и отправляться в моем профиле. Я новичок в программировании, поэтому размышления о нескольких контроллерах, кажется, потеряли меня.
Что я делаю, так это публикую комментарии в форме, а затем перечисляю их.
Фон: _comment_form
и _comment
находятся как частичные в Profile
about. (Моя следующая задача - переключиться с другой информации профиля, но это другой вопрос в целом.)
Используя помощь, предоставленную в моем последнем вопросе, я чувствую, что я почти на месте, но получаю ошибку.
Миграция CreateComments:
t.integer :profile_id
t.integer :author_id
t.string :body
Модель "Мой комментарий":
class Comment < ActiveRecord::Base
belongs_to :profile
belongs_to :author, :class_name =>"User", :foreign_key => "author_id"
end
CommentsController:
def create
@comment = Comment.new(params[:comment].merge(:author_id => current_user.id))
@comment.save!
redirect_to profile_path(@comment.profile)
end
ProfilesController:
def create
@profile = Profile.new(params[:profile])
if @profile.save
redirect_to profile_path(@profile), :notice => 'User successfully added.'
else
render :action => 'new'
end
end
def show
@user = User.find(params[:id])
@profile = @user.profile
@comment = @profile.comments.new
end
Частицы комментариев внутри профиля частичные:
<div id="commentEntry">
<%= render :partial => 'comment', :collection => @profile.comments %>
</div>
<div id="newitem">
<%= render :partial => 'comment_form' %>
</div>
routes.rb:
resources :users do
resources :profiles
end
resources :comments
_comment_form.html.erb:
<%= form_for @comment do |f| %>
<%= f.text_field :body %>
<%= f.submit 'Add new' %>
<% end %>
_comment.html.erb:
<li class="comment" title="<%= @comment.author.profile.first_name %> <%= @comment.author.profile.last_name %>">
<%= @comment.body %>
</li>
Итак, проблема № 1: Завершение _comment.html.erb
в цикле <% for @comment in @user.profile.comments %>
показывает профиль, но когда я пытаюсь отправить новый комментарий, я получаю "Неизвестное действие" Не удалось выполнить действие "обновление" найти для CommentsController ". Если я уберу цикл, профиль не отобразится, и я получу «NoMethodError в профилях # показать неопределенный метод« профиль »для nil: NilClass». Кто-нибудь может мне помочь и объяснить, что я делаю неправильно?
Выпуск № 2: Я создал образец комментария в rails console
, и когда я получаю отображаемый профиль, поле ввода комментария: тело заполняется телом комментария. Любые идеи о том, что может происходить?