Cocoon gem - 嵌套表单保存元素,请求新的模板文件并显示空字段



我知道这个问题已经问了无数次,但我没有找到任何有我的问题的人。

请注意,这是一个单一资源,这一点可能很重要。

models/basic.rb

class Basic < ApplicationRecord
  has_many :social_networks
  accepts_nested_attributes_for :social_networks, reject_if: :all_blank, allow_destroy: true
  mount_uploader :logo, LogoUploader
end

型号/social_network.rb

class SocialNetwork < ApplicationRecord
  belongs_to :basic
end

控制器/basic_controller.rb

def show
end
def new
  @basic = Basic.new
  @basic.social_networks.build
end
def edit
end
private
# Use callbacks to share common setup or constraints between actions.
def set_basic
  @basic = Basic.first
end
# Never trust parameters from the scary internet, only allow the white 
list through.
def basic_params
  params.require(:basic).permit(:base_title, :resume, :logo, social_networks_attributes: [:id, :name, :url])
  end
end

视图/基础知识/_form.html.erb

<%= form_with(model: @basic, local: true, url: basics_path) do |f| %>
  <div id="social_networks">
    <%= f.fields_for :social_networks do |sn| %>
      <%= render 'social_networks', f: sn %>
    <% end %>
    <div class="links">
      <%= link_to_add_association 'Ajouter', f, :social_networks %>
    </div>
  </div>
<%= end %>

_social_network_fields.html.erb

<div class="nested-fields">
  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name, placeholder: 'Nom' %>
  </div>
  <div class="field">
    <%= f.label :url %>
    <%= f.text_field :url, placeholder: 'Lien' %>
  </div>
  <div class="links">
    <%= link_to_remove_association 'Supprimer', f %>
  </div>
</div>

如问题标题中所述,我的表单运行良好,并保存了我正确填写的元素。但是,当我想编辑时,我收到一条错误消息,指出它找不到资源的模板(它等待名为 _social_networks.html.erb 的文件(。当我添加它(并让它为空白(时,我得到的表单就像我想创建一些新资源一样。

我做错了什么?

提前谢谢你

你写的

<%= render 'social_networks', f: sn %>

但你的观点是_social_networks_fields.html.erb

你不能_social_networks_fields.html.erb重命名为_social_networks.html.erb吗?

同时更改添加关联链接:

<div class="links">
  <%= link_to_add_association 'Ajouter', f, :social_networks, :partial => 'social_networks' %>
</div>

或者只是使用

<%= render 'social_networks_fields', f: sn %>

而且您不需要 social_networks.html.erb

最新更新