2

使用 RailsAdmin。我有一个 Post 模型和一个 User 模型。每个帖子都属于一个用户。

我使用以下代码让 RailsAdmin 为我处理关联,并在创建 Post 时自动设置 user_id:

  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,但我无法隐藏它的关联标签(即显示在输入旁边的读取“用户”的标签)——这意味着我的用户会看到:

在此处输入图像描述

如您所见,有一个标签“用户”,旁边有一个空白区域,下面是“必需”一词。

是否也有隐藏输入的关联标签(而不仅仅是输入本身),以免用户感到困惑?我的代码有问题吗?

提前致谢

4

3 回答 3

3

我想我找到了一个可行的解决方案:

  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 

不理想,但有效

于 2011-05-07T21:52:55.243 回答
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
于 2011-10-27T20:59:43.557 回答
1

我认为这个特性已经被添加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
于 2021-10-12T21:37:26.297 回答