jfe*_*ick 7 ruby-on-rails activeadmin
我有这个:
ActiveAdmin.register User do
controller do
def show
@user = User.find(params[:id])
show!
end
end
show do
attributes_table do
row "User" do
link_to @user.display_name, user_path(@user.slug)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我加载页面时,我收到一条错误消息:
undefined method `display_name' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
这意味着@user是零.我很肯定@user被正确设置(意味着查找器正在获取数据库中存在的适当数据).我认为它与ActiveAdmin的工作原理有关,我不熟悉.有什么想法吗?
此外,我知道我可以这样做show do |user|,但是我使用它有更复杂的东西,需要访问控制器中的用户对象.
wpp*_*wpp 27
以防万一其他人偶然发现:
controller.instance_variable_get(:@user)
Run Code Online (Sandbox Code Playgroud)
也应该工作.
在主动管理员中有控制器,尽管如此,你无法将实例变量传递给arbre部分.但你可以使用params哈希:
ActiveAdmin.register User do
controller do
def show
params[:user] = User.find(params[:id])
show!
end
end
show do
attributes_table do
row "User" do
link_to params[:user].display_name, user_path(params[:user].slug)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
PS:如果您不想更改params,则存储所有实例变量@arbre_context.assigns.您可能也喜欢:
link_to @arbre_context.assigns[:user].display_name, user_path(@arbre_context.assigns[:user].slug)
Run Code Online (Sandbox Code Playgroud)
实例变量被定义为辅助方法。如果您在控制器中定义了该定义,则可以访问它。或者,您可以简单地调用resource,它将引用活动记录对象。
ActiveAdmin.register User do
controller do
def show
@user = User.find(params[:id])
show!
end
end
show do
attributes_table do
row "User" do
# note that your have access to `user` as a method.
link_to user.display_name, user_path(user.slug)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
在 activeadmin 中似乎不起作用。“form”块内唯一可用的实例变量是@config。
解决此问题的最佳方法是使用部分内容,如“自定义表单”中所述
http://activeadmin.info/docs/5-forms.html
| 归档时间: |
|
| 查看次数: |
6854 次 |
| 最近记录: |