【发布时间】:2020-11-08 18:03:22
【问题描述】:
我有一个 Article 模型,它有 tags 和关注 edit.html.erb
/app/models/article.rb
class Article < ApplicationRecord
include Taggable
has_many :child_articles, class_name: "Article",
foreign_key: "parent_article_id"
belongs_to :parent_article, class_name: "Article", optional: true
accepts_nested_attributes_for :tags
end
/app/views/articles/edit_form.html.erb
<title>_edit_form.html.erb</title>
_edit_form.html.erb
<%= form_with(model: @article, local: true, method: :patch, url: article_path) do |article| %>
<% if @article.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(article.errors.count, "error") %> prohibited
this article from being saved:
</h2>
<ul>
<% @article.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= article.hidden_field :parent_article_id, value: @article.parent_article_id %>
<p>
<%= article.label :title %><br>
<%= article.text_field :title, value: "#{@article.title}" %>
</p>
<p>
<%= article.label :text %><br>
<%= article.text_area :text, value: "#{@article.text}", size: 200 %>
</p>
<p>
<div style="font-weight: bold;">tags</div>
<%= article.fields_for :tags do |article_tags| %>
<%= article_tags.text_field :name, value: "#{@article.tags.map(&:name).join(", ")}" %>
<% end %>
</div>
</p>
<p>
<%= article.submit %>
</p>
<% end %>
为此,我将按照示例哈希进行更新:
>>
params
=> <ActionController::Parameters {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"NK/5QEf/723CfgznpMCWT0/itHUj68gz5GmzD+nDzaLM6NILLex7/Co809QILxRUgegCwOppr/S8PN8vK3Avfw==", "article"=>{"parent_article_id"=>"", "title"=>"Überschrift", "text"=>"Toller Text", "tags_attributes"=>{"0"=>{"name"=>"Rails, Ruby"}}}, "commit"=>"Update Article", "controller"=>"articles", "action"=>"update", "id"=>"1"} permitted: false>
为什么
"controller"=>"articles", "action"=>"update", "id"=>"1"
没有"article" 键?明显属于文章信息。
此致
冯·斯波茨
【问题讨论】:
标签: ruby-on-rails form-helpers