Ruby on Rails Относительные выпадающие списки Второй зависит от первого - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть три разные модели, которые будут связаны с этим.Я пытаюсь создать пользователя, который будет принадлежать владельцу.У владельца много партнеров, а у партнера много клиентов.Проблема с этим и как он отличается от других вопросов, задаваемых здесь, заключается в том, что я не хочу, чтобы кто-то просматривал источник страницы и просматривал весь список клиентов.В данный момент это находится на стадии разработки / тестирования.В конце концов я ограничу владелец_id жестко закодированным на @ current_user's owner_id.Этот владелец может видеть только своих партнеров и клиентов этих партнеров.Я бы не хотел, чтобы они видели партнеров другого владельца.

<%= f.input :owner_id, :as => :select, :collection => Owner.find(:all) %>
<%= f.input :partner_id, :as => :select, :collection => Partner.find(params[:owner_id]) %>
<%= f.input :client_id, :as => :select, :collection => Client.find(params[:partner_id]) %>

Проблема, с которой я столкнулся выше, заключается в том, что команда find params генерирует ошибку, поскольку: owner_id не имеет значения и не собирается искатьлюбые партнеры.Итак, как мне сделать так, чтобы выбор клиента заполнял список клиентов при выборе партнера.Точно так же, как выяснить, как заполнить Партнеров после выбора владельца.Имейте в виду, что линия владельца изменится, как только я пойму эту часть.Нет смысла двигаться вперед, пока это не выяснено.

Если бы это был город, основанный на выбранном штате, я бы нашел несколько вариантов, но пока не нашел подходящий с этим.Спасибо, ребята!

1 Ответ

1 голос
/ 29 сентября 2011

Я не думаю, что вы понимаете (или пользуетесь) модельными ассоциациями.Так как я не совсем понимаю вашу модель или бизнес-область, я здесь много размахиваю руками ... похоже, вы хотите ограничить количество опций в поле выбора только теми, которые должен сделать текущий пользовательбыть в состоянии видеть.

Допустим, у вас было приложение в стиле Tumblr.У вас много пользователей и много блогов.Текущий вошедший в систему пользователь может опубликовать новый элемент в любом из блогов, к которым у него есть доступ.При создании нового сообщения и выборе блога, в котором он будет публиковаться, было бы неуместно разрешать мне публиковать сообщения в вашем блоге или даже знать, что он существует.Вместо Blog.all мы бы использовали @current_user.blogs.

<%= semantic_form_for @post do |f| %>
  <%= f.input :blog, :label => "Which blog?", :as => :select, :collection => @current_user.blogs %>
  ...
<% end %>

Я бы посмотрел мой список блогов на выбор, вы бы увидели свой.Я думаю, что это частично отвечает на ваш вопрос.

Другая часть вопроса, кажется, примерно динамически , изменяющая содержимое поля выбора на основе выборов, сделанных в других полях выбора в форме,Это то, что должно быть обработано с помощью Javascript / AJAX, и это не входит в сферу применения Formtastic и простой ответ о переполнении стека:)

Я бы рекомендовал сделать это как можно более простым дляпервая версия.

...