我正在努力掌握编写模型方法背后的基础知识,我认为我需要做些什么才能让它发挥作用。基本上,我有一个项目视图,它显示属于该项目的 project_todos。然后嵌套在我有属于 project_todo 的 project_todo_comments 之下。全部在一个视图中。
我已经建立了关联,以便项目has_manyproject_todos、project_todobelongs_to项目和has_manyproject_todo_comments。然后当然是 project_todo_comment belongs_toproject_todo。
在项目控制器中,我正在这样做:
  def show
    @project = Project.find(params[:id])
    # Display the form to create a new todo
    @project_todo = ProjectTodo.new
    # Create the instance variable to display the loop in the view
    @todos = @project.project_todos
    # Display the form to create a new comment
    @project_todo_comment = ProjectTodoComment.new
     # Create the instance variable to display the loop in the view
    @comments = @project.project_todo_comments
    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @project }
    end
  end
因此,我可以在项目中添加待办事项并显示它们,我还可以向项目待办事项添加注释并显示它们,所有这些都在同一个视图中。但是,我很难让评论仅显示与它们相关联的待办事项。现在,当我对任何待办事项添加评论时,每个待办事项都会显示该评论。
在视图中,我在这里显示 project_todos 并嵌套表单以添加评论,然后显示评论:
 <% @todos.each do |todo| %>
    <p><%= todo.title %></p>
    <%= form_for(@project_todo_comment) do |f| %>
        <%= f.hidden_field :project_todo_id, :value => @project_todo.id %>
        <%= f.hidden_field :project_id, :value => @project.id %>
        <%= f.text_area :comment %>
        <%= f.submit 'Add Comment' %>
    <% end %>
    <% @comments.each do |comment| %>
        <%= comment.comment %>
    <% end %>
  <% end %>
有人告诉我,我需要编写一个模型方法才能使其正常工作,但我仍在努力理解这些。谁能保证我确实需要编写一个模型方法,并指出我了解它们的方向?谢谢!