【发布时间】:2012-12-14 15:08:54
【问题描述】:
我正在努力掌握编写模型方法背后的基本原理,我认为我需要做些什么才能让它发挥作用。基本上,我有一个项目视图,它显示属于该项目的 project_todos。然后嵌套在我有属于 project_todo 的 project_todo_cmets 之下。一个视图。
我已经建立了关联,以便项目 has_many project_todos、project_todo belongs_to project 和 has_many project_todo_cmets。然后当然是 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
因此,我可以在项目中添加待办事项并显示它们,我还可以将 cmets 添加到项目待办事项并显示它们,所有这些都在同一个视图中。但是,我很难让 cmets 仅显示与它们相关联的待办事项。现在,当我对任何待办事项添加评论时,每个待办事项都会显示该评论。
在视图中,我在这里显示 project_todos 并嵌套表单以添加评论,然后显示 cmets:
<% @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 %>
有人告诉我,我需要编写一个模型方法才能使其工作,但我仍在努力理解这些。谁能保证我确实需要编写一个模型方法,并指出我了解它们的方向?谢谢!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 models