我试图在视图模板上显示的信息不在数据库中,而是出于逻辑推论,但这对我不起作用。
这是我所做的:
模型
class SignupHistory < ActiveRecord::Base
attr_accessor(:device)
def device_used # This method returns the device used from User-Agent and mapped as either Desktop or Mobile
device = "#{request.headers["User-Agent"].match(/\(.*?\)/)[0].split('(')[1].split(';')[0]}"
[:Macintosh, :Windows, :Linux, :Unix].include?(device) ? 'Desktop' : 'Mobile'
end
end
模板视图
.row
.panel.panel-primary
.panel-heading
span = t('admin_header.traffics')
.panel-body
= table_for(@traffic, class: 'table table-condensed table-hover') do |t|
- t.column :device, 'Devise Used', class: 'col-xs-2' # I want to output the returned value in device_used method here.
我不想在数据库中创建新属性,我只想在视图中为数据库中的所有条目显示该对象。
答案 0 :(得分:0)
class SignupHistory < ActiveRecord::Base
attr_accessor(:device)
def device_used # This method returns the device used from User-Agent and mapped as either Desktop or Mobile
device = "#{request.headers["User-Agent"].match(/\(.*?\)/)[0].split('(')[1].split(';')[0]}"
[:Macintosh, :Windows, :Linux, :Unix].include?(device) ? 'Desktop' : 'Mobile'
end
您的device
方法中的device_used
是一个局部变量,无法按您想要的方式进行访问,在这种情况下attr_accessor与编写此变量相同,这就是您的列为空白的原因
def device
end
要完成所需的操作,您想使用别名,您应该将其添加到您的班级中,这样会很好。
alias_method :device, :device_used