#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