Как отображать только имя связанной записи в рельсах 3.1.0 - PullRequest
0 голосов
/ 01 февраля 2012

В нашем приложении rails 3.1.0 есть rfq, quote и test_item. В Запросе предложений много цитат и тестовых заданий. Цитата принадлежит rfq и имеет много тестовых заданий. Тестовый элемент имеет много предложений и кавычек.

При создании предложения тестовые позиции в rfq передаются непосредственно в новую форму предложения. Вот код нового контроллера в кавычках:

  @quote = @rfq.quotes.new()
  @quote.test_items << @rfq.test_items

Вот код представления в новой форме цитаты для отображения тестовых заданий, переданных из rfq:

<%= simple_form_for([@rfq, @quote]) do |f| %>    
....        
  <% @quote.test_items.each do |t| %>   
    <p><%= f.association :test_items, :label => false %><%= link_to_remove_fields "remove", f %></p> 
  <% end %> 
....  
<% end %> 

Приведенный выше код представления может отображать тестовый элемент, переданный из rfq, и поддерживать связь (в кавычках много тестовых элементов), что и нужно приложению. Однако он также отображает поле выбора для тестового элемента, который здесь не нужен (не может изменить тестовый элемент в кавычках, кроме удаления. Также t в цикле не был полезен). Нам нужно только отобразить имя тестовых элементов, сохранить связь (в кавычках содержится много тестовых элементов) и разрешить удаление тестового элемента (выполняется с помощью link_to_remove_fields).

Есть ли чистый способ сделать это? Большое спасибо.

1 Ответ

1 голос
/ 02 февраля 2012

Взгляните на механизм вложенных атрибутов в Rails. Для этого требуется как объявление модели, acceptpts_nested_attributes_for , так и поддержка помощников по формам fields_for , которые также совместимы с simple_fields_for.

Я думаю, что ваша ошибка в том, что вы зацикливаетесь на test_items явно и вызываете f.assocation, который сообщает форме, что вы хотите выбрать другой test_item. Я думаю, что вы пытаетесь сделать, это позволить пользователю удалить test_items с помощью флажка. Вам нужно будет использовать fields_for для неявного циклического перемещения по списку test_items и использовать nested_attributes для разрешения удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...