如何在视图中获取关联的模型属性值? Rails
How to get assocated model's attribute values in views ? Rails
我有三个模型...
models/resident.rb
class Resident < ActiveRecord::Base
belongs_to :hostel
has_many :leaves,dependent: :delete_all
has_one :user,dependent: :delete
end
models/user.rb
class User < ActiveRecord::Base
belongs_to :resident
end
models/leave.rb
class Leave < ActiveRecord::Base
belongs_to :resident
end
现在,当我试图在 views/leave/show.html.erb 中访问 leave 属性的值时
我得到这个:
app/views/leaves/show.html.erb
<%= @leaves %>
在浏览器中输出:
#<Leave::ActiveRecord_Associations_CollectionProxy:0x007fde611850f0>
我的休假控制器看起来像:
leaves_controller.rb
class LeavesController < ApplicationController
def new
if logged_in?
@leave=Leave.new
else
flash[:info]="Please login to mark a leave"
redirect_to root_path
end
end
def show
@leaves= current_user.resident.leaves
end
def create
@leave=current_user.resident.leaves.create(leave_params)
if @leave.save
flash[:info] = "Leave successfully marked"
redirect_to new_leave_path
else
flash[:danger] = "Something wrong Happened try again"
redirect_to root_path
end
end
private
def leave_params
params.require(:leave).permit(:start_date,:end_date,:destination)
end
end
我是否为居民和相关用户制作了正确的叶子(创建方法)?
显示方法是否正确?
以及如何在 中显示用户的叶子属性。html.erb 叶子视图。
你做的一切都很好,show
方法也很好,模板准确地显示了被告知要显示的内容。
@leaves
是一个集合。你可能想展示它的元素?这应该会导致正确的解决方案:
<% @leaves.each do |l| %>
<%= l.inspect %>
<% end %>
A Resident has_many 留下 current_resident.leaves returns 所有 current_resident 的叶子的数组。您将需要遍历叶子以显示各个属性。尝试
@leaves.first.attribute_name
在您看来,了解数据的表示方式。要显示所有叶子,您需要在视图中使用循环
@leaves.each do |leave|
leave.inspect
end
我有三个模型...
models/resident.rb
class Resident < ActiveRecord::Base
belongs_to :hostel
has_many :leaves,dependent: :delete_all
has_one :user,dependent: :delete
end
models/user.rb
class User < ActiveRecord::Base
belongs_to :resident
end
models/leave.rb
class Leave < ActiveRecord::Base
belongs_to :resident
end
现在,当我试图在 views/leave/show.html.erb 中访问 leave 属性的值时 我得到这个:
app/views/leaves/show.html.erb
<%= @leaves %>
在浏览器中输出:
#<Leave::ActiveRecord_Associations_CollectionProxy:0x007fde611850f0>
我的休假控制器看起来像: leaves_controller.rb
class LeavesController < ApplicationController
def new
if logged_in?
@leave=Leave.new
else
flash[:info]="Please login to mark a leave"
redirect_to root_path
end
end
def show
@leaves= current_user.resident.leaves
end
def create
@leave=current_user.resident.leaves.create(leave_params)
if @leave.save
flash[:info] = "Leave successfully marked"
redirect_to new_leave_path
else
flash[:danger] = "Something wrong Happened try again"
redirect_to root_path
end
end
private
def leave_params
params.require(:leave).permit(:start_date,:end_date,:destination)
end
end
我是否为居民和相关用户制作了正确的叶子(创建方法)?
显示方法是否正确?
以及如何在 中显示用户的叶子属性。html.erb 叶子视图。
你做的一切都很好,show
方法也很好,模板准确地显示了被告知要显示的内容。
@leaves
是一个集合。你可能想展示它的元素?这应该会导致正确的解决方案:
<% @leaves.each do |l| %>
<%= l.inspect %>
<% end %>
A Resident has_many 留下 current_resident.leaves returns 所有 current_resident 的叶子的数组。您将需要遍历叶子以显示各个属性。尝试
@leaves.first.attribute_name
在您看来,了解数据的表示方式。要显示所有叶子,您需要在视图中使用循环
@leaves.each do |leave|
leave.inspect
end