Rails 4 - 范围 - 限制为用户自己的属性
Rails 4 - Scopes - Limiting to user's own attributes
我正在尝试在 Rails 4.
中制作一个应用程序
我的个人资料表单允许用户创建个人资料。个人资料的一部分是关于他们的资格。
协会是:
profile.rb
has_many :qualifications
accepts_nested_attributes_for :qualifications, reject_if: :all_blank, allow_destroy: true
资格 rb
belongs_to :profile
然后,我的个人资料视图文件夹包含一个部分以显示该个人资料的资格。节目部分有:
<% Qualification.pending.order(year_earned: :asc).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
我的资格模型的范围为:
scope :pending, -> { where(pending: true) }
问题是,每个配置文件都列出了所有资格。我如何将此限制为仅列出自己的资格的每个配置文件。
我试过在各个地方将 'Profile' / '@profile' 添加到部分视图中,但这些尝试只会产生错误。
是否有关于如何执行此操作的示例。我认为 rails 可能知道如何执行此操作,因为资格查看表单嵌套在配置文件表单中。
采纳蒂姆的建议
我把资格部分展示改成:
<% profile.qualifications.pending.order(year_earned: :asc).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
然后我将配置文件显示页面更改为:
<%= render :partial => 'profiles/qualifications', profile: @profile %>
我收到这个错误:
#<#:0x007f97ba143030>
的未定义局部变量或方法“配置文件”
我认为您需要将您的个人资料传递给部分,所以:
<%= render 'your_partial', profile: @profile %>
然后就可以在局部使用了,例如
<% profile.qualifications.each do |q| %>
<%= q.name %>
<% end %>
我正在尝试在 Rails 4.
中制作一个应用程序我的个人资料表单允许用户创建个人资料。个人资料的一部分是关于他们的资格。
协会是:
profile.rb
has_many :qualifications
accepts_nested_attributes_for :qualifications, reject_if: :all_blank, allow_destroy: true
资格 rb
belongs_to :profile
然后,我的个人资料视图文件夹包含一个部分以显示该个人资料的资格。节目部分有:
<% Qualification.pending.order(year_earned: :asc).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
我的资格模型的范围为:
scope :pending, -> { where(pending: true) }
问题是,每个配置文件都列出了所有资格。我如何将此限制为仅列出自己的资格的每个配置文件。
我试过在各个地方将 'Profile' / '@profile' 添加到部分视图中,但这些尝试只会产生错误。
是否有关于如何执行此操作的示例。我认为 rails 可能知道如何执行此操作,因为资格查看表单嵌套在配置文件表单中。
采纳蒂姆的建议
我把资格部分展示改成:
<% profile.qualifications.pending.order(year_earned: :asc).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
然后我将配置文件显示页面更改为:
<%= render :partial => 'profiles/qualifications', profile: @profile %>
我收到这个错误:
#<#:0x007f97ba143030>
的未定义局部变量或方法“配置文件”我认为您需要将您的个人资料传递给部分,所以:
<%= render 'your_partial', profile: @profile %>
然后就可以在局部使用了,例如
<% profile.qualifications.each do |q| %>
<%= q.name %>
<% end %>