RailsAdmin — скрытые поля формы и метки

#ruby-on-rails #rails-admin

#ruby-on-rails #rails-администратор

Вопрос:

Использование RailsAdmin. У меня есть модель Post и модель User. Каждая запись принадлежит пользователю.

Я использую следующий код, чтобы заставить RailsAdmin обрабатывать ассоциацию за меня и автоматически устанавливать идентификатор пользователя при создании записи:

   config.model Post do 
    edit do
      field :user_id do
        # use a form_field instead of the default drop-down
        partial :form_field
        # hide the input
        view_helper :hidden_field
        # set the value to current_user.id
        def value
          bindings[:view]._current_user.id
        end
      end 
    end
  end
  

Этот код работает, он устанавливает user_id равным идентификатору current_user, а также скрывает form_field (ввод html) от просмотра, так что пользователь даже не знает, что он устанавливается от его имени.

Однако есть одна небольшая проблема. Хотя я могу скрыть form_field, я не могу скрыть связанную с ним метку (т. Е. метку с надписью «User», которая появляется рядом с вводом), что означает, что мои пользователи видят это:

введите описание изображения здесь

Как вы можете видеть, рядом с надписью «Пользователь» есть пустое место, а под ним слово «Требуется».

Есть ли способ скрыть связанную метку ввода (а не только сам ввод), чтобы это не сбивало с толку пользователя? Что-то не так с моим кодом?

Заранее спасибо

Ответ №1:

Я думаю, что нашел рабочее решение:

   field :user_id do
    view_helper :hidden_field

    # I added these next two lines to solve this
    label ""
    help ""

    partial :form_field
    def value
      bindings[:view]._current_user.id
    end
  end 
  

Не идеально, но это работает

Ответ №2:

Я также столкнулся с тем же препятствием и после некоторых проб и ошибок (и советов от группы rails_admin) пришел к небольшой альтернативе:

 config.model Library do
  edit do 
    field :user_id do
      # This hides the field label
      label :hidden => true
      # This hides the help field *yuk*
      help ""
      def value 
        bindings[:view]._current_user.id 
      end
      # This hides the field input 
      view_helper do
        :hidden_field
      end
    end
  end 
  field :name
end
  

Ответ №3:

Я думаю, что эта функция rails_admin уже добавлена, и для этого не требуется обходное решение. Вы можете сделать это следующим образом

   config.model Post do 
    edit do
      field :user_id do
        # This hides everything related with this field
        hide
        # You still need to set this value of course
        def value
          bindings[:view]._current_user.id
        end
      end 
    end
  end