gpt4 book ai didi

ruby-on-rails - 此 Rails 代码是否属于应用程序 Controller ?

转载 作者:数据小太阳 更新时间:2023-10-29 08:53:40 26 4
gpt4 key购买 nike

我有一些代码(可以正常工作),但我只想确保按照 Rails 惯例/最佳实践将它放在正确的位置。代码的目的是在定义“@facility”时生成一组副标题导航链接(这可以在几个 Controller 之一中完成)。现在,我将以下代码散布如下。

我的问题:这感觉不对,尤其是 html 模板开头的逻辑部分。我还想定义一些其他类似的助手来根据不同的模型定义这些子标题链接。这个逻辑(设置@subhead_links)应该在应用程序 Controller 中吗?作为每个模型中的方法(所以我会设置@subhead_links = @facility.subhead_links)?

我已经寻找了一些答案,但这类哲学问题不像错误代码那样容易通过 google 搜索。

在应用程序助手中

  # build subhead
def subhead_links(facility)
links = [
{ :label => "Configure Facility", :path => facility_path(facility) },
{ :label => "Waitlists", :path => waitlist_tiers_path(:id => facility.id) },
{ :label => "Applications", :path => sponsors_path(:id => facility.id) }
return links
end

部分包含在 application.html.erb 模板中

<% if @facility %>
<% @subhead_links = subhead_links(@facility) %>
<% end %>

<% if @subhead_links %>
<nav class="subnav">
<ul>
<% @subhead_links.each do |link| %>
<li><%= link_to link[:label], link[:path] %></li>
<% end %>
</ul>
</nav>
<% end %>

在其他各种 Controller 中...

@facility = Facility.find(params[:id])

最佳答案

我从不依赖 partials 中的实例变量,并尝试将尽可能多的逻辑放在 helpers 中。

这将导致以下结果:

应用布局:

<%= render_subhead_links(@facility) %>

应用程序助手:

def render_subhead_links(facility)
if facility
links = [
{ :label => "Configure Facility", :path => facility_path(facility) },
{ :label => "Waitlists", :path => waitlist_tiers_path(:id => facility.id) },
{ :label => "Applications", :path => sponsors_path(:id => facility.id) }
render :partial_name, :links => links
end
end

部分:

<nav class="subnav">
<ul>
<% links.each do |link| %>
<li><%= link_to link[:label], link[:path] %></li>
<% end %>
</ul>
</nav>

关于ruby-on-rails - 此 Rails 代码是否属于应用程序 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com