在活动管理中自定义"view"操作



我是Ruby on rails的新手,并且正在用Ruby on Rails 4th版本进行项目。 现在我正在更改活动管理员中的订单视图,但我收到错误。

ActiveAdmin.register Order do
permit_params :id, :order_completed, :approved
# changing the visual of view action, so admin user can able to see complete order details
show do |order|
attributes_table do
row :id # Order ID
row 'Name' params[:user].first_name # its not working, not showing the user first_name assiated with order id 
# It should be user name. although user first_name is in users table and User model is availble.
row 'Adress' params[:user].address # its not working, not showing the user address assiated with order id
# It should be user address. although user first_name is in users table and User model is availble.
end
end
controller do
def show 
order_id = Order.find(params[:id]).user_id
params[:user] = User.find(order_id)
show!
end
end
end

我的目标是显示与订单相关的用户的详细信息,如地址、姓名等。

订单表由

- id
- user_id
- order_completed (boolean)
- approved
- order_status (string) [in process, done]

用户表由

- id
- first_name
- last_name
- address
- membership_id

我假设您已经在各自的模型中建立了类"Order"和类"User"之间的关系。(belongs_to和has_many方法。如果您需要更多帮助,请告诉我。 然后,当您注册类时,您还必须在 Activeadmin 中声明该关系,因此请尝试以下操作:

app/admin/order.rb:
ActiveAdmin.register Order do
permit_params :id, :order_completed, :approved
belongs_to :user # Declaring that order belongs to user here
# changing the visual of view action, so admin user can able to see complete order details
show do |order|
attributes_table do
row :id # Order ID
row 'Name' do
@order.user.first_name
end
row 'Address' do 
@order.user.address
end
end
end
controller do
def show 
@order = Order.find(params[:id])
show!
end
end
end`

最新更新