我按照《Rails 入门》教程建立了一个带有评论的简单博客。
我把它应用到我自己的场景中:带有历史项目的历史。在我意识到我需要能够编辑这些历史项目(有点像编辑评论)之前,一切都或多或少地好。
我已经知道了,所以在显示历史项目的部分上有一个“编辑项目”链接。它似乎命中了历史项目控制器中的编辑操作。但是我得到一个带有空白字段的表单,按钮上写着“创建”。
显示历史项目的部分链接:
<%= link_to 'Edit Item', edit_history_history_item_path(history_item.history, history_item) %>
历史项目控制器中的编辑操作:
def edit
@history = History.find(params[:history_id])
@history_item = HistoryItem.find(params[:id])
end
edit.html.rb 页面中引用部分的部分:
<%= render 'form' %>
部分本身:
<%= form_for([@history, @history.history_items.build]) do |f| %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
(blah blah lots more fields)
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我注意到部分顶部“@history.history_items”末尾的.build。我认为这是创建引用原始历史(或博客文章)的新历史项目(或博客文章的新评论)所必需的。当它是一个新的历史项目时,有什么方法可以让我保留它,但是当我想编辑一个现有的项目时,可以用另一种方式吗?