Rails 3- Active_admin - Показать поле на новой странице, но не в редактировании - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть модель с именем пользователя. Я хочу показать поле пароля только на странице создания, а не на странице редактирования.

ActiveAdmin.register User do
    form do |f|
       f.inputs "User Details" do
          f.input :first_name
          f.input :last_name
          f.input :email
          if f.object.new_record?
              f.input :password
          end

       end
    f.buttons
    end
 end

Это то, что я пытался, но использовал .new_record? функция все мои поля исчезают со страницы редактирования.

Есть идеи?

Ответы [ 4 ]

1 голос
/ 05 января 2012

Решением было использование частичного.

1 голос
/ 16 апреля 2012

Для всех, как я, это произойдет позже: ответ, предоставленный Meskallito, работает, но вам может потребоваться поиграть с наборами полей, чтобы учесть странности ActiveAdmin / Formtastic, которые иногда появляются при вставке логики, в зависимости от того, как ваша формаструктурирован.Например, когда я реализовал его ответ, я сделал это:

form do |f|
  f.inputs 'Account' do
    f.inputs "Credentials" do
      f.input :email,                   :label => "Email Address"
    end
    if f.object.id.nil?
      f.inputs "Password" do
        f.input :password,              :label => "Password"
        f.input :password_confirmation, :label => "Password Confirmation"
      end
    end
    ...
  end
end

Теперь набор полей с полями password и password_confirmation отображается только при создании нового пользователя, а не при редактированиипользователь.Новая запись?первоначально использовавшаяся функция Тони могла бы сработать, так как он сказал, что когда он попробовал ее, его поля исчезли, что могло быть связано с этой проблемой.

Кстати, я бы только прокомментировал оригинальный ответ Мескаллито, но мне не хватило респ.: -)

0 голосов
/ 05 февраля 2016

Попробуйте это:

  if f.object.new_record?
    f.input :password
    f.input :password_confirmation
  end
0 голосов
/ 31 декабря 2011

Я использовал это:

if f.object.id.nil?
    f.input :password
end
...