Вопрос: Моя цель - отображать проекты под страницей пользователя и отображать окно комментария при каждом проекте, указанном на этой странице пользователя. Но когда я пытаюсь отобразить форму поля комментария, я получаю ошибку маршрутизации. Я знаю, это потому, что он не может вывести идентификатор проекта. Моя догадка связана с контроллером, но не поняла. Кто-нибудь знает, как я могу это решить?Rails - Ошибка маршрутизации - Вызов модели из другой модели
Routing Error
No route matches {:controller=>"comments", :format=>nil, :project_id=>#<Project id: nil...>}
Для моего приложения, я создал модель и контроллеры для пользователей, проектов и комментариев. Комментарии принадлежат проекты и проекты принадлежат пользователям
user.rb
has_many :projects
project.rb
has_many :comments
belongs_to :user
comment.rb
belongs_to :project
routes.rb
resources :users do
resources :projects do
resources :comments
end
end
resources :projects do
resources :comments
end
resources: comments
вид/пользователей/projects.html.erb
<%= render @projects %>
вид/проекты/_project.html.erb
<%= project.content %>
<%= render 'comments/form' %>
Просмотреть/комментарии/_form.html.erb
<%= form_for([@project, @project.comments.build]) do |f| %>
<div class="field">
<%= f.text_area :content, :class => "span12", :rows => "3" %>
</div>
<%= f.hidden_field :user_id, :value => current_user.id %>
<div class="actions">
<%= f.submit "Add Comment", :class => "btn btn-header" %>
</div>
<% end %>
comments_controller.rb
def create
@project = Project.find(params[:project_id])
@comment = @project.comments.create!(params[:comment])
if @comment.save
redirect_to projects_user_path(@project.user)
end
end
Ошибка с переадресацией выше
NoMethodError in CommentsController#create
undefined method `user'
В вашей ассоциации имеется ошибка. Является 'принадлежит_то: пользователю' и' принадлежит_проекту' в единственном числе. – cortex
спасибо. исправлено. ошибка маршрутизации по-прежнему сохраняется. – spl