ссылка на ассоциацию, не работающую в рельсах 4, использующих камень кокона - PullRequest
0 голосов
/ 21 января 2019

У меня есть модель курса и недельная модель, которая связана с ассоциациями.Link_to_association не отображает какую-либо форму при нажатии, и нет журналов, созданных для проверки ошибки.

модель курса

class Course < ApplicationRecord
  belongs_to :startup
  belongs_to :program
  has_many :weeks
  accepts_nested_attributes_for :weeks,allow_destroy: true
end

недельная модель

class Week < ApplicationRecord
  belongs_to :course
  has_many :events
  belongs_to :startup
end

_new.html.erb

 <%= form_for [:admin, @course] do |f| %>
  <%= f.label :name %> <br>
  <%= f.text_field :name, class: "input-md form-control mb-20" %><br> 
  <%= f.label :program_id, "Program" %> <br>
  <%= f.collection_select :program_id, Program.where('id'), :id, :name, {}, {class: "input-md form-control mb-20"} %>
  <%= f.label :duration %> <br>
  <%= f.text_field :duration, class: "input-md form-control mb-20" %>
  <%= f.fields_for :weeks, name: "weeks", id: 'weeks' do |week1| %>
     <%= render partial: 'week_fields', locals: {f: week1} %><br>
     <%= link_to_add_association 'Add more weeks', f, :weeks, class: "btn btn-mod btn-medium btn-round submit-button"%>
  <% end %>
  <%= f.submit :submit %>
<% end %>

params:

ActiveAdmin.register Course do
    permit_params :name, :duration, :startup_id, :program_id, weeks_attributes: [:id, :name, :description]
    form partial: "new"
    controller do
    def new
        @course = Course.new
        @course.weeks.build
    end
end

1 Ответ

0 голосов
/ 23 января 2019

Классическая ошибка: вы помещаете link_to_association в петлю f.fields_for. Это означает, что ссылка будет отображаться, только если доступны уже вложенные элементы.

Примеры документации кокона - это хамл, где важен отступ. Если вы не знакомы с haml, вы также можете проверить примеры ERB . Так что в вашем случае вы должны написать что-то вроде

  <div id='weeks'>
    <%= f.simple_fields_for :weeks do |week| %>
      <%= render 'week_fields', :f => week %>
    <% end %>
    <div class='links'>
      <%= link_to_add_association 'add week', f, :weeks, class: "btn btn-mod btn-medium btn-round submit-button" %>
    </div>
  </div>
...