我的应用程序在时间表索引中显示 user.name 时遇到问题(显示所有时间表,而不仅仅是当前用户时间表)
用户型号:
# Table name: timesheets
#
# id :integer not null, primary key
# user_id :integer
# starting :datetime
# ending :datetime
# approved :boolean
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
has_many :timesheets
....
end
时间表模型(标准 user_id 是外键)
# Table name: timesheets
#
# id :integer not null, primary key
# user_id :integer
# starting :datetime
# ending :datetime
# approved :boolean
# created_at :datetime not null
# updated_at :datetime not null
#
class Timesheet < ActiveRecord::Base
attr_accessible :starting, :ending
belongs_to :user
validates :user_id, presence: true
validates :starting, presence: true
validates :ending, presence: true
validate :end_after_start
...
end
我的时间表控制器中的索引定义:
def index
@timesheets = Timesheet.paginate(page: params[:page], per_page: 10)
end
最后是显示 user_id 的 index.html.erb 文件,但我想要的是用户名。请记住,这是由管理员批准时间表,因此不会是登录用户,而是希望查看所有时间表并批准他们想要的时间表的管理员。
<ul class="timesheets">
<% @timesheets.each do |timesheet| %>
<NOBR>
<li>
<%= timesheet.user_id %>
<%= timesheet.starting.strftime("[ %^a %^b %e, %Y - %l:%M %p ] - ") %><%= timesheet.ending.strftime("[ %^a %^b %e, %Y - %l:%M %p ]") %> <%= (timesheet.ending - timesheet.starting)/3600 %> Hours
<% if current_user.admin? %>
|
<% if timesheet.approved? %>
<%= link_to "Un-Approve", { action: :unapprove, id: timesheet.id }, method: :put %>
<% else %>
<%= link_to "Approve", { action: :approve, id: timesheet.id }, method: :put %>
<% end %>
<% end %>
</li>
</NOBR>
<% end %>
</ul>
<%= will_paginate %>
非常感谢您的帮助,这是我提出的第一个问题,所以我希望我遵循了所有正确的协议。