дополнительная информация через simple_form_for - PullRequest
0 голосов
/ 01 июня 2018

У меня есть:

    = simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post}) do |f|
      = f.error_notification
      .input-row
        = f.input :email, :required => false, :autofocus => true, placeholder: "Enter your email address", :
      .submit-row
        .row
          .col-xs-2
            .cancel
              - if resource_name == :admin
                = link_to "Cancel", new_admin_session_path
              - else
                = link_to "Cancel", new_client_session_path
          .col-xs-10
            = f.submit "Reset Password", :class => "btn btn-primary"

У меня также есть params[:type] Я хочу передать это на следующую страницу, которая является сгенерированным электронным письмом, которое находится в app / views / accounts_mailer / reset_password_instructions.html.haml(Я не уверен, что кто-то знает, что это именно то, что нужно)

Вопрос в том, как мне получить дополнительную информацию и как получить к ней доступ?

1 Ответ

0 голосов
/ 04 июня 2018

Поскольку ваша форма использует помощник по ресурсам, и я не знаю, на какой объект он действует, я предполагаю, что это для объекта User.Если нет, то вы всегда можете настроить соответственно.

В вашем файле модели /user.rb вверху добавьте (не забудьте использовать тот объект, на который действует ваша форма):

attr_accessor :something

В вашем контроллереобслуживая представление с вашей формой, вы должны сделать:

@something = params[:type]

Затем в вашем simple_form_for вы можете добавить:

= f.hidden_field :something, :value => @something

Это передаст его контроллеру, обрабатывающему вашу форму, на которойточка, к которой вы будете обращаться: params[:user][:something]

Теперь, если эта информация никогда не будет видна пользователям и останется в бэкэнде, вы пропустите добавление attr_accessor, пропустите определение @something в вашем контроллере ипропустите добавление hidden_field в форму и вместо этого выполните: session[:something] = params[:type] в контроллере, который отображает форму.После этого вы можете получить к нему доступ в любом контроллере, просто помните, что пользователи, которые не обращались к этой форме, не определили ее.

...