我正在努力掌握编写模型方法背后的基础知识,我认为我需要做些什么才能让它发挥作用。基本上,我有一个项目视图,它显示属于该项目的 project_todos。然后嵌套在我有属于 project_todo 的 project_todo_comments 之下。全部在一个视图中。
我已经建立了关联,以便项目has_many
project_todos、project_todobelongs_to
项目和has_many
project_todo_comments。然后当然是 project_todo_comment belongs_to
project_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 %>
有人告诉我,我需要编写一个模型方法才能使其正常工作,但我仍在努力理解这些。谁能保证我确实需要编写一个模型方法,并指出我了解它们的方向?谢谢!