问题:我的目标是列出用户页面下的项目,并在此用户页面上列出的每个项目下都有评论框呈现。但是,当我尝试呈现评论框表单时,出现路由错误。我知道这是因为它无法取出项目的ID。我的猜测与控制器有关,但尚未弄清楚。有人知道我能如何解决这个问题吗?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'
您的关联中存在错误。是'belongs_to:user'和'belongs_to project'单数。 – cortex
谢谢。固定。路由错误仍然存在。 – spl