我有一个用户模型,它有一个连接列,我在调用views/user/_showcase.html.erb 部分时尝试将其引用为additional_column
有关完整的背景故事,请参阅正确使用部分的 Rails 3 菜鸟问题,因为我被要求将问题分成两篇文章。
意见/用户/_showcase.html.erb
<td><img src="<%= user.avatar_url(32) %>" /></td>
<td><%= user.username%></td>
<% additional_columns.each do |column| %>
<td><%= user[column]%></td>
<% end %>
这是我在用户模型上实现计算列的方式
class User < ActiveRecord::Base
include ActionView::Helpers::DateHelper
... snip ...
# Get the last 10 users who made Karmunity accounts
scope :get_newest_users , order("created_at desc").limit(10);
# Get 10 users with the highest karma score
scope :get_highest_rated_user, order("karma_score desc").limit(10);
scope :avatar_url
scope :joined
# get the dated they joined in time ago format
def joined
time_ago_in_words(self.created_at)
end
# Get the gravatar image url
def avatar_url (size=nil)
query_string = '';
unless size.nil?
query_string = 's=' + size.to_s
end
"http://www.gravatar.com/avatar/" + Digest::MD5.hexdigest(self.email.strip.downcase) + "?#{query_string}"
end
end
但是,当我执行此代码 user.avatar_url 时,如果我手动键入 user.joined,它可以正常工作,但动态列(我假设它的行为类似于 user[:joined])返回一个空字符串。我确定我在这里做了一些愚蠢的事情,但我不知道如何动态获取计算/格式化的模型值。
为了完整起见,这是我对部分的调用
<%= render :partial => 'users/showcase', :locals => { :id => 'newest_users', :title => 'Newest Users', :users => @newest_users, :additional_columns => [:affiliation,:joined]} %>
我会很感激任何方向,因为这是我的第一个 Rails 应用程序,我不确定我应该问什么样的问题。
谢谢!