Как заставить simple_form использовать базовый класс для URL-адресов, а не подкласс?

#html #ruby-on-rails #ruby #forms #simple-form

#HTML #ruby-on-rails #ruby #формы #simple-form

Вопрос:

Всякий раз, когда я использую 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, похоже, все равно хочет сделать его параметром [:admin].

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

 base_class => 'User'
  

Это позволило бы обрабатывать все эти вещи.

Комментарии:

1. Мне все еще нужна помощь с этим. На самом деле это сводит меня с ума. Например, если вы администратор, который является подклассом user, а затем перейдите к редактированию вашего профиля… предполагается, что вам нужны параметры [: admin], а не параметры [:user]. Очевидно, что это действительно дерьмово, потому что это будет отличаться для всех типов пользователей в вашей системе.

Ответ №1:

Если вы передадите параметр:url, как предлагает рафаэль Франка, вместе с параметром :as, он должен работать правильно. Например:

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

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

Ответ №2:

Передайте :url опцию simple_form_for .

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

Комментарии:

1. К сожалению, этого недостаточно. Он все равно попытается присвоить всем свойствам имя admin[first_name] вместо user [first_name]

2. Используйте конструктор форм rails по умолчанию и посмотрите, решит ли это вашу проблему