Насколько дорого стоит использование коробок выбора с моделью и что лучше всего делать? - PullRequest
0 голосов
/ 24 августа 2011

при условии, что у меня есть модель A и модель B.

class A < ActiveRecord::Base
  has_one :b
end

class B < ActiveRecord::Base
end

И форма для А, где перечислены все возможные В для выбора.

...
<div class="field">
<%= f.label :hv_type_id %><br />
<%= f.collection_select :b_id, @bs, :id, :name %>
</div>
...

Я сделал

@bs = B.all

в методе контроллера А.


Это лучшая практика? Что если A содержит другую ассоциацию, например, для C
Должен ли контроллер А также загружать все С?


Каков ваш опыт, думаете ли вы, что это сильно замедляет работу приложения?
Есть ли способ справиться с этим эффективно?
См. http://en.wikibooks.org/wiki/Ruby_on_Rails/ActionView/Forms#Using_select_boxes_with_a_model

1 Ответ

1 голос
/ 24 августа 2011

Хотя ваш написанный код не будет работать (например, у вас есть два «класса A», вы используете @bs в вашем контроллере, но bs на ваш взгляд - это разные переменные и т. Д.), Я понимаю ваш дрейф. Ответ основан на количестве записей, которые вы извлекаете для поля выбора.

Если это всего лишь несколько, то проблем нет. Если вы отображаете сотни или тысячи вариантов выбора, это определенно является проблемой на нескольких уровнях: это создаст огромную страницу для загрузки пользователем, что приведет к потере тонны полосы пропускания; и это сделает их работу по поиску и выбору записи очень сложной.

Если вам нужно связать со многими записями таким образом, вам лучше использовать автозаполнение. Или создайте приложение, чтобы начать с выбора дополнительной записи, прежде чем переходить к форме. Например. первый шаг - поиск «B» с помощью, скажем, поиска, а второй шаг - добавление дополнительной информации, связанной с B.

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