Как вы получаете simple_form использовать базовый класс для URL-адресов, а не подкласс? - PullRequest
4 голосов
/ 23 мая 2011

Всякий раз, когда я использую simple_form_for (), по умолчанию используется "my_subclasses_path", а не "my_base_classes_path".Как я могу сказать ему не использовать подкласс?

В моем случае у меня есть объект User, но также много подклассов.Я хочу использовать стандартные пользовательские URL-адреса, так как все подклассы работают одинаково для этих форм.

Кроме того, я хочу, чтобы simple_form не давал именования свойств после подкласса.Например, если подкласс «Admin», я хочу, чтобы отправленные параметры были «params [: user]», а не «params [: admin]».

Я считаю, что вышеупомянутое ДЕЙСТВИТЕЛЬНО странно, потому что форма на самом деле говорит "user [first_name]", а НЕ "admin [first_name]" - но simple_form, похоже, все равно хочет сделать его params [: admin].

По сути, подклассы заставляют simple_for работать неправильно.Хотелось бы, чтобы была такая опция, как

base_class => 'User'

, которая бы справилась со всеми этими вещами.

Ответы [ 2 ]

19 голосов
/ 26 марта 2012

Если вы передадите опцию: url, как предлагает rafaelfranca, вместе с опцией: as, она должна работать правильно.Например:

simple_form_for(@admin, :url => user_path(@admin), :as => :user)

Это дает мне правильное действие формы и параметры (например, user [name] вместо admin [name]).

4 голосов
/ 23 мая 2011

Передайте параметр :url в simple_form_for.

, например: simple_form_for(@admin, :url => users_path)

...