Rails 从 Parent 数据中获取数据并在嵌套视图中显示为页面标题(标题)
Rails Get Data from Parent Data and Show in Nested View as a Page Tittle (heading)
我正在尝试让成员的名字和姓氏显示为所有嵌套地址视图中的标题。到目前为止,我想出了这个(只是为了索引),这可能不是 "rails way" 但这是我现在想出来的唯一方法。
def index
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
membercontact = Backend::Membercontact.find(params[:membercontact_id])
@memberaddresses = membercontact.memberaddresses.order('mafullname ASC')
end
我真正关注的台词是:
<h2>Private Address Information - <%= @membercontact.mcfirstname + ' ' + @membercontact.mclastname %></h2>
每个视图的顶部都有这个(我知道不是很干)但现在只是为了学习。但这就是上面一行在视图中的样子。
<!-- Bread Crumbs -->
<div class="row wrapper border-bottom white-bg page-heading">
<div class="col-lg-10">
<h2>Private Address Information - <%= @membercontact.mcfirstname + ' ' + @membercontact.mclastname %></h2>
<ol class="breadcrumb">
<li>
<a>Home</a>
</li>
<li>
<%= link_to main_app.backend_membercontacts_path, class: "nav-link" do %>
Members List
<% end %>
</li>
<li class="active">
<%= link_to main_app.backend_membercontact_memberaddresses_path, class: "nav-link" do %>
Private Address List
<% end %>
</li>
</ol>
</div>
<div class="col-lg-2">
</div>
</div>
我是否必须将下面的行添加到每个控制器操作中?或者我有更好的方法可以解决这个问题。
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
我也看到过类似的问题,但我认为你必须在 for each 之间调用数据
<% @memberaddresses.each do |memberaddress| %>
<% end %>
如果您想要 @membercontact
在每个控制器的每个操作中可用,您可以在 application_controller.rb 中的方法中定义它,并在 运行 之前使用该方法使用 before_action 指令的每个动作。
我认为您可能必须在每个控制器中调用@membercontact 行:
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
除非 membercontact_id
对于特定的 session 总是相同的(例如:如果 membercontact_id
将是 current_user.id
) - 是这样吗?
但是,您的 Backend::Membercontact
class 中可能有一个实例方法,它将 returning full name
如下:
def full_name
mcfirstname + " " + mclastname
end
然后从视图内部调用 @membercontact
上的 full_name
方法。
此外,如果您的所有视图都具有相同的 header:Private Address Information...
,您不妨也从模型内部 return 获取它,或许可以得到一些东西喜欢:
def page_title
"Private Address Information - " + mcfirstname + " " + mclastname
end
最后一个是如果 member
在所有控制器中保持不变(例如,如果成员是当前用户),那么您可以拥有服务 class 到 return:
def self.page_title
"Private Address Information - " + current_user.mcfirstname + " " + current_user.mclastname
end
然后从每个控制器,@page_title = MyServiceClass.page_title
并从您的视图中调用以下内容:
<h2><%= @page_title %></h2>
希望这对您有所帮助...
我正在尝试让成员的名字和姓氏显示为所有嵌套地址视图中的标题。到目前为止,我想出了这个(只是为了索引),这可能不是 "rails way" 但这是我现在想出来的唯一方法。
def index
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
membercontact = Backend::Membercontact.find(params[:membercontact_id])
@memberaddresses = membercontact.memberaddresses.order('mafullname ASC')
end
我真正关注的台词是:
<h2>Private Address Information - <%= @membercontact.mcfirstname + ' ' + @membercontact.mclastname %></h2>
每个视图的顶部都有这个(我知道不是很干)但现在只是为了学习。但这就是上面一行在视图中的样子。
<!-- Bread Crumbs -->
<div class="row wrapper border-bottom white-bg page-heading">
<div class="col-lg-10">
<h2>Private Address Information - <%= @membercontact.mcfirstname + ' ' + @membercontact.mclastname %></h2>
<ol class="breadcrumb">
<li>
<a>Home</a>
</li>
<li>
<%= link_to main_app.backend_membercontacts_path, class: "nav-link" do %>
Members List
<% end %>
</li>
<li class="active">
<%= link_to main_app.backend_membercontact_memberaddresses_path, class: "nav-link" do %>
Private Address List
<% end %>
</li>
</ol>
</div>
<div class="col-lg-2">
</div>
</div>
我是否必须将下面的行添加到每个控制器操作中?或者我有更好的方法可以解决这个问题。
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
我也看到过类似的问题,但我认为你必须在 for each 之间调用数据
<% @memberaddresses.each do |memberaddress| %>
<% end %>
如果您想要 @membercontact
在每个控制器的每个操作中可用,您可以在 application_controller.rb 中的方法中定义它,并在 运行 之前使用该方法使用 before_action 指令的每个动作。
我认为您可能必须在每个控制器中调用@membercontact 行:
@membercontact = Backend::Membercontact.find(params[:membercontact_id])
除非 membercontact_id
对于特定的 session 总是相同的(例如:如果 membercontact_id
将是 current_user.id
) - 是这样吗?
但是,您的 Backend::Membercontact
class 中可能有一个实例方法,它将 returning full name
如下:
def full_name
mcfirstname + " " + mclastname
end
然后从视图内部调用 @membercontact
上的 full_name
方法。
此外,如果您的所有视图都具有相同的 header:Private Address Information...
,您不妨也从模型内部 return 获取它,或许可以得到一些东西喜欢:
def page_title
"Private Address Information - " + mcfirstname + " " + mclastname
end
最后一个是如果 member
在所有控制器中保持不变(例如,如果成员是当前用户),那么您可以拥有服务 class 到 return:
def self.page_title
"Private Address Information - " + current_user.mcfirstname + " " + current_user.mclastname
end
然后从每个控制器,@page_title = MyServiceClass.page_title
并从您的视图中调用以下内容:
<h2><%= @page_title %></h2>
希望这对您有所帮助...