views/user/_showcase.html.erb パーシャルを呼び出すときに additional_column として参照しようとしている結合列を持つユーザー モデルがあります。
完全な裏話については、質問を 2 つの投稿に分割するように求められたため、Rails 3 の noob の質問を正しく使用してパーシャルを参照してください。
ビュー/ユーザー/_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]} %>
これは私の最初のレールアプリであり、どのような質問をするべきかよくわからないので、どんな方向性でもありがたいです.
ありがとう!