天道酬勤,学无止境

Can't display in Active Admin index attribute of associated model (belongs_to/has_many) - Rails 3.2

I'm building a daily deal Rails app to learn RoR.

I am facing a problem for the past few hours : i can't get a model's attribute of an other associated model on active admin. Let me show you exactly the problem :

I have two models: Brand (i.e the brand of the deal) and Deal. A deal belongs to a Brand but a Brand can have many Deals.

models/deal.rb is like this:

class Deal < ActiveRecord::Base
  belongs_to :brand

and we have models/brand.rb:

class Brand < ActiveRecord::Base    
  has_many :deals

attr_accessible :name

And i did the t.belongs_to in my migrations so this is ok.

In Active Admin's Deals' create form , i type, as admin, which brand the deal is associated with:

admin/deal.rb

ActiveAdmin.register Deal do
# -- Form -----------------------------------------------------------
  form do |f|
    f.inputs "Brand (i.e. client)" do
      f.input :brand_id, :label => "Select a brand:", :as => :select, :collection => Brand.all
    end

it works great, and i can create Deals with a certain brand. but I CAN'T manage to display the NAME of the Brand in my list of Deals iun Active Admin'x index :

ActiveAdmin.register Deal do
index do   
  selectable_column   
  # id_column 
  column :title
  column :deal_amount
  column :brand do |deal|
    link_to deal.brand.name, admin_brand_path(deal.brand)
  end

...doesn't work.

How can I do that ?

I tried everything but i basically don't know how to fetch the name of a Brand given it matches the brand_id in the Deal's table.

Any help appreciated.

UPDATE the error i'm getting is it doesn't understand function .name: unknown method 'name'

评论

You need to handle the case of deal.brand being nil.

ActiveAdmin.register Deal do
  index do   
    selectable_column   
    # id_column 
    column :title
    column :deal_amount
    column :brand do |deal|
      if deal.brand.present?
        link_to deal.brand.name, admin_brand_path(deal.brand)
      else
        status_tag('Empty')
      end
    end
  end
end

Your :brand column looks correct to me. If you find a deal in the console what do you get if do deal.brand and deal.brand.name?

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Django入门(一)
    跟书《python编程:从入门到实践》,学习用Django编写名为“学习笔记”的Web应用程序。建立项目项目路径:learning_log安装python3.7:此处省略,参考这里:https://blog.csdn.net/miss1181248983/article/details/90779786建立虚拟环境:# cd /opt/# mkdir learning_log && cd learning_log# python -m venv 11_env激活虚拟环境:# source ll_env/bin/activate进入虚拟环境终端。要停止使用虚拟环境,可执行:# deactivate安装Django:# pip3 install DjangoDjango仅在虚拟环境处于活动状态时才可用。下面与书中不同部分是由于Django版本更新导致,照着操作即可。本人Django版本为2.2.3,可通过命令python -m django --version查看Django版本。在Django中创建项目:# django-admin.py startproject learning_log .# lslearning_log ll_env manage.py# ls learning_log/__init__.py settings.py urls.py wsgi
  • Rails ActiveAdmin:在同一视图中显示相关资源的表(Rails ActiveAdmin: showing table of a related resource in the same view)
    问题 使用 Rails ActiveAdmin gem show资源时,我想显示另一个关联模型的表。 所以让我们说一个Winery has_many :products 。 现在我想在Winery管理资源的show页面上show关联的产品。 我希望它是一个类似于我在Products资源index中得到的表。 我让它工作了,但只能通过手动重新创建 HTML 结构,这很糟糕。 是否有更简洁的方法来为关联资源的特定子集创建index表样式视图? 我有什么,这有点糟糕: show title: :name do |winery| attributes_table do row :name row(:region) { |o| o.region.name } rows :primary_contact, :description end # This is the part that sucks. div class: 'panel' do h3 'Products' div class: 'attributes_table' do table do tr do th 'Name' th 'Vintage' th 'Varietal' end winery.products.each do |product| tr do td link_to product.name, admin
  • Render partial from another model
    I have a rails application that models a house. There is a house model that has many parameters and it has_many rooms. A room has a house_id and a name. I've also used http://github.com/ryanb/complex-form-examples to allow many lights and small_appliances to be added to room. complex-form-example uses RJS and partials to accomplish this. There is a controller called calculator that is what users will use to access the application. When the submit button on calculator is pressed, it redirects to an add_rooms page (located in app/views/calculator/add_rooms.html.erb) page where the user can add
  • Python:Django入门——建立项目 & 创建应用程序
    来源:《Python编程:从入门到实践》 文章目录 1 建立项目1.1 制定规范1.2 建立虚拟环境1.3 安装virtualenv1.4 激活虚拟环境1.5 安装Django1.6 在Django中创建项目1.7 创建数据库1.8 查看项目 2 创建应用程序2.1 定义模型2.2 激活模型2.3 Django管理网站1.创建超级用户2.向管理网站注册模型3.添加主题 2.4 定义模型Entry2.5 迁移模型Entry2.6 向管理网站注册Entry2.7 Django shell 本章学习如何使用Django(http://djangoproject.com)开发一个“学习笔记”(Learning Log)的项目,这是一个在线日志系统,能够记录所学习的有关特定主题的知识将为这个项目制定规范,然后为应用程序使用的数据定义模型将使用Django的管理系统来输入一些初始数据,再学习编写视图和模板,让Django能够为我们的网站创建网页Django是一个Web框架——一套用于帮助开发交互式网站的工具Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等 1 建立项目 建立项目时,首先需要以规范的方式对项目进行描述,再建立虚拟环境,以便在其中创建项目 1.1 制定规范 完整的规范详细说明了项目的目标,阐述了项目的功能,并讨论了项目的外观和用户界面规范应突出重点
  • Yii: How to manage videos when using multiuploadfiles extension
    I am a yiibie and i am working on uploading of video. I have used the uploadmultifile extension and have made changes according to this link http://www.yiiframework.com/extension/uploadmultifiles/in my video view file and my videocontroller. The video successfully gets goes into the video folder(projectname/video) but it doesn't comes the database table named video. I want that when i create a video via projectname/video/create it should be displayed when i type the url projectname/video/admin so that i can manage my videos here and after that i can simply display all my videos on the
  • 第三章 Odoo 12 开发之创建第一个 Odoo 应用
    本文为最好用的免费ERP系统Odoo 12开发手册系列文章第三篇。 Odoo 开发通常都需要创建自己的插件模块。本文中我们将通过创建第一个应用来一步步学习如何在 Odoo 中开启和安装这个插件。我们将从基础的开发流学起,即创建和安装新插件,然后在开发迭代中更新代码来进行升级。 Odoo 采用类 MVC(Model-View-Controller)的结构,我们将深入到各层来实施一个图书应用。本文主要内容有: 创建一个新的模块,用来实施相关功能 添加应用的特性功能:顶级菜单项和安全组 添加一个一开始会失败但在项目完成时成功运行的自动化测试 实施模型层,定义应用的数据结构和相关访问权限 实施后台视图层,编写内部用户界面 实施业务逻辑层,支持数据验证和自动化 实施 web 层,展示访客和内部用户的用户界面 系统准备 本文要求安装了 Odoo 服务并可通过命令行启动服务来进行模块安装和运行测试之类的操作。如果还没有相关环境,请参照本系列文章第二篇Odoo 12开发之开发环境准备。 本文中我们将从零开始创建第一个 Odoo 应用,无需额外的代码。本文代码可通过 GitHub 仓库进行查看。 概览图书项目 为更好地在本文中探讨,我们将使用一个现实中可以使用的学习项目。一起来创建一个管理图书库的 Odoo 应用。该项目将在后续文章中持续使用,每篇文章都会进行一次迭代,为应用添加新的功能
  • Django 菜鸟教程(跑通流程)
    Django 教程 一、Django 安装1、Django 版本对应的 Python 版本:2、Django下载地址:3、安装(无需下载)4、验证安装cmd进入python获取版本信息 二、创建第一个项目1、在合适位置创建一个目录2、打开DOS进入到上一步创建的目录下3、输入:django-admin startproject project4、目录层级说明manage.py__init__.pysettings.pyurls.pywsgi.py 三、基本操作1、设计表机构a、班级表结构表名:grade字段: b、学生表结构表名:students字段: 2、配置数据库a、配置MySQLpython3.x安装的是PyMySQL在__init__.py文件中写入两行代码 b、格式: 3、创建应用a、打开cmd进入01-wj目录下的project的目录b、执行:python manage.py startapp myAPPc、myApp目录说明admin.pymodels.pyviews.py 4、激活应用5、定义模型引入:from django.db import models模型类要继承models.Model类 6、在数据库中生成数据表a、生成迁移文件b、执行迁移 7、测试数据操作a、进入到python shellb、执行:python manage.py shellc、引入包:d
  • What method attributes are used in Django?
    Under the documentation for ModelAdmin.list_display it describes a few ways to configure a method/function for usage and display in an admin's list view: admin_order_field (describes which field in the model to use for ordering by the method) allow_tags (allows HTML to be displayed rather than escaped) short_description (sets the label for the column) boolean (determines if the field should be treated a boolean field for display) It describes them as method attributes. Addendum Just found some more method/function attributes, used for template filters: is_safe, used when marking a template
  • How do you handle serialized edit fields in an Active Admin resource?
    I have a model, Domain, which has a text field, names. > rails g model Domain names:text invoke active_record create db/migrate/20111117233221_create_domains.rb create app/models/domain.rb > rake db:migrate == CreateDomains: migrating ================================================== -- create_table(:domains) -> 0.0015s == CreateDomains: migrated (0.0066s) ========================================= I set this field as serialized into an array in the model. # app/models/domain.rb class Domain < ActiveRecord::Base serialize :names, Array end Create the ActiveAdmin resource for this model > rails
  • Go 语言编程 — gorm ORM 框架
    目录 文章目录 目录实现一个关系型数据库应用程序需要做什么?GORM连接数据库表定义Module Struct tags 表操作db.HasTable 表是否存在db.CreateTable 创建表db.DropTable 删除表db.ModifyColumn 修改列db.DropColumn 删除列db.AddIndex 添加索引db.RemoveIndex 删除索引db.AddForeignKey 添加外键db.RemoveForeignKey 删除外键 CRUD 操作db.Create 插入db.First、db.Find 查询db.Where 选择db.Select 投影db.Joins 连接db.Order 排序db.Limit 限量db.Offset 偏移量db.Count 总数 db.Update 更新更新所有字段更新修改字段更新选定字段 db.Delete 删除软删除 关系(Relationship)类型Belongs ToHas OneHas ManyMany To Many关联(Associations)查找关联添加关联替换关联删除关联清空关联关联的数量 预加载事务Migrate 实现一个关系型数据库应用程序需要做什么? DB API:数据库操作的封装接口。DAO(Data Access Object)Models:数据库 Table(表)、Column(列属性
  • Fastapi Admin,快速搭建基于fastapi与tortoise-orm的管理后台
    简介 FastAPI-admin 是一个基于fastapi和tortoise-orm和rest-admin的后台管理面板。 FastAPI-admin 提供了开箱即用的 CRUD,只需少量的配置。 在线 demo 地址 https://fastapi-admin.long2ice.cn 用户名: admin密码: 123456 数据会每天进行重置。 预览 快速开始 本地运行样例 查看examples。 执行git clone https://github.com/long2ice/fastapi-admin.git. 创建数据库fastapi-admin并且导入examples/example.sql。 执行python setup.py install。 执行env PYTHONPATH=./ DATABASE_URL=mysql://root:123456@127.0.0.1:3306/fastapi-admin python3 examples/main.py: INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [89005] INFO: Started server process [89009] INFO: Waiting
  • django后台管理-ModelAdmin对象
    Django最强大的部分之一是自动生成的管理后台界面。 它从你的模型中读取元数据,以提供一个快速的、以模型为中心的界面,信任的用户可以在这里管理你网站上的内容。 建议管理后台仅作为组织的一个内部管理工具使用。 它不是为了建立你的整个前端。管理站点有许多hook用于定制,但要注意试图专门使用这些hook。 如果你需要提供一个更加以流程为中心的界面,它抽象出数据库表和字段的实现细节,那么可能需要编写自己的视图。在本文中,我们将讨论如何激活、使用和定制Django的管理后台界面。【摘自官方文档】/admin/),将能够使用你的Django管理后台站点。 如果你需要创建一个登录用户,可以使用createsuperuser命令。ModelAdmin对象ModelAdmin类是模型在管理后台界面中的表示形式。 通常,它们保存在你的应用中的名为admin.py的文件里。 让我们来看一个关于ModelAdmin类非常简单的例子: django.contrib myproject.myapp.models django.contrib myproject.myapp.modelsregister装饰器 register(*models, site=django.admin.sites.site)可以使用一个装饰器来注册ModelAdmin类。如果你使用的不是默认的AdminSite
  • Django
    Django 一,简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 1,框架介绍 Django 项目是一个Python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有: 用于创建模型的对象关系映射为最终用户设计的完美管理界面一流的 URL 设计设计者友好的模板语言缓存系统。 Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。 Django 根据比利时的爵士音乐家[Django Reinhardt](https://baike.baidu.com/item/Django Reinhardt)命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。 由于Django在近年来的迅速发展,应用越来越广泛
  • Django入门(二)
    跟书《python编程:从入门到实践》,学习用Django编写名为“学习笔记”的Web应用程序。Web应用程序的核心是让任何用户都能够注册账户并能够使用它,不管用户身处何方。我们可以创建一些表单,让用户能够添加主题和条目,以及编辑既有的条目。让用户能够输入数据先来添加几个页面,让用户能够输入数据。可以让用户能够添加新主题、添加新条目以及编辑既有条目,但不能通过管理网站来输入,因为只有超级用户才可以这样做。添加新主题首先来让用户能够添加新主题。创建基于表单的页面的方法几乎与前面创建网页一样:定义一个URL,编写一个视图函数并编写一个模板。一个主要差别是,需要导入包含表单的模块forms.py。用于添加主题的表单:在Django中,创建表单的最简单方式是使用ModelForm。创建一个名为forms.py的文件,将其存储到models.py所在的目录中,并在其中编写第一个表单。# vim learning_logs/forms.pyfrom django import formsfrom .models import Topicclass TopicForm(forms.ModelForm): class Meta: model = Topic fields = ['text'] labels = {'text': ''}首先导入了模块forms以及要使用的模型Topic
  • Django框架
    《Django Web框架教学笔记》 目录 文章目录 《Django Web框架教学笔记》目录 Django框架的介绍起源&现状Django的安装 创建Django项目创建项目的指令Django项目的目录结构`settings.py` 文件介绍 URL 介绍URL定义Django如何处理一个URL对应的请求视图函数(view) Django 路由配置path() 函数path转换器 re_path()函数 HTTP协议的请求和响应HTTP 请求HTTP 响应 Django处理GET和POST请求GET处理POST处理Django 模板语言模板的传参模板的变量XSS攻击反射型xss存储型xssDOM xss 模板的标签过滤器 模板的继承url 反向解析 静态文件Django中的应用 - app创建应用app应用的结构应用的分布式路由include 函数 应用的模板 模型层Django下配置使用 mysql 数据库模型(Models)Django 的 ORM框架模型示例模型类Models 创建字段类型字段选项Meta内部类 数据库迁移的错误处理方法 模型层的基本操作管理器对象创建数据对象Django shell 的使用查询数据查询谓词修改数据删除数据聚合查询F对象Q对象原生的数据库操作方法 admin 后台数据库管理注册自定义模型类修改自定义模型类的展现样式模型管理器类再谈Meta类
  • 01-Springboot博客项目
    本系列是对李仁密老师的视频的学习记录 前端页面设计与实现部分不会在此展示,直接上后端部分。 项目源码和教程可以点击上面链接进行学习 码云地址:项目源码 项目搭建 1. 创建项目2. 配置项目3. 定制日志4. 关联静态页面5. 实体设计6. 创建实体,生成数据库表7. admin后台7.1 登陆管理页面补充笔记(重点)1. 控制器之间的数据交互2. 转发和重定向的区别3. 前后端的数据交互 MD5加密登录拦截器 7.2 分类、标签管理后端校验 7.3 博客管理(含重要注释)简单分页查询复杂分页查询 8. 前端展示8.1 首页展示8.2 全局search8.3 文章详情页8.4 详情评论8.5 按分类/标签展示按分类展示按标签展示 8.6 博客归档8.7 关于我与功能完善 9. 打包运行10. 项目thymeleaf知识点11. 相关UI技术selection前端非空校验 1. 创建项目 IDEA利用Spring初始化工具创建 依赖选择如下 2. 配置项目 更改thymeleaf版本 pom文件中 <properties> <thymeleaf.version>3.0.11.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version> <
  • 同一资源的两个页面-ActiveAdmin(Two pages for the same resource - ActiveAdmin)
    问题 目前,我有User模型,该模型已在user.rb注册为ActiveAdmin的新资源。 生成的页面显示具有范围的所有用户( all / journalists / startup_employees )。 现在,我想为相同的资源和相同的作用域创建另一个页面,但是应该只存在将waiting字段设置为true记录(并且上一页应该只显示带有:waiting => false )。 我该怎么办? 我知道我可以使用过滤器来做到这一点,但是我需要两个单独的页面,菜单中有两个链接。 // 解决方案 它甚至比建议还简单(谢谢大家!): ActiveAdmin.register User, :as => 'Waitlist User' do menu :label => "Waitlist" controller do def scoped_collection User.where(:waitlist => true) end end # code scope :all scope :journalists scope :startup_employees end ActiveAdmin.register User do controller do def scoped_collection User.where(:waitlist => false) end end # code
  • Django项目开发流程
    1. Django入门知识 1.1 MVC框架 软件框架是由其中的各个模块组成的,每个模块负责特定的功能,模块与模块之间相互协作来完成软件开发。 MVC框架的核心思想:解耦合(让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容)。 MVC:model view controller MVC各部分的功能 M:Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。V:View,用于封装结果,生成页面展示的html内容。C:Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。 Django框架遵循MVC设计,并且有一个专有名词:MVT MVT各部分的功能 M:为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。V:View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。T:Template,与MVC中的V功能相同,负责封装构造要返回的html。 1.2 虚拟环境创建 1. 安装虚拟环境包 sudo pip install virtualenv sudo pip install virtualenvwrapper 3. 创建虚拟环境 virtualenv 虚拟环境名 virtualenv -p python3 环境名(python3版本) 4. 虚拟环境操作 激活虚拟环境:
  • 使用active_model_serializers序列化深层嵌套的关联(Serializing deeply nested associations with active_model_serializers)
    问题 我正在使用Rails 4.2.1和active_model_serializers 0.10.0.rc2 我是API的新手,因此选择了active_model_serializers因为它似乎已成为Rails的标准(尽管我不反对使用RABL或其他序列化器) 我遇到的问题是,我似乎无法在多级关系中包括各种属性。 例如,我有: 专案 class ProjectSerializer < ActiveModel::Serializer attributes :id, :name, :updated_at has_many :estimates, include_nested_associations: true end 和估计 class EstimateSerializer < ActiveModel::Serializer attributes :id, :name, :release_version, :exchange_rate, :updated_at, :project_id, :project_code_id, :tax_type_id belongs_to :project belongs_to :project_code belongs_to :tax_type has_many :proposals end 提案 class ProposalSerializer
  • Serialize an array of models using active_model_serializers
    I am trying to send the serialized version of a model to a view as a param, using the gem active_model_serializers #app/serializers/admin_serializer.rb class AdminSerializer < ActiveModel::Serializer attributes :id, :email, :access_locked? end #app/controllers/dashboard/admins_controller.rb def index @search = Admin.search(params[:q]) @admins = @search.result(:distinct => true).page(params[:page]).per(10) @page_entries_info = view_context.page_entries_info @admins # render json: @admins respond_to do |format| format.html format.js format.json {render json: @admins} end end #app/views/dashboard