我正在尝试简化和干掉我的rails代码,以免在多个地方复制网址列表,并且必须让它们保持同步。我有一个带有 parent 方法的static_pages控制器,它有不同类别网址列表的实例变量,即
typeof
然后在我的static_pages / views文件夹中,我有一个文件 的 parent.html.erb 代码
class StaticPagesController < ApplicationController
def parent
@collection1 = [
["Link 1", "http://link1.com"],
["Link 2", "http://link2.com"]
]
@collection2 = [
["Link 3", "http://link3.com"],
["Link 4", "http://link4.com"]
]
end
end
但我在static_pages中有另一个视图, child.html.erb ,我想只显示集合1
<% @collection1.each do |link| %>
<a href="<%= link[1] %>" target = "_blank" class="btn btn-primary btn-block" role="button"><%= link[0] %></a>
<% @collection2.each do |link| %>
<a href="<%= link[1] %>" target = "_blank" class="btn btn-primary btn-block" role="button"><%= link[0] %></a>
但是为了做到这一点,我必须在同一个控制器中定义另一个方法:
<% @collection1.each do |link| %>
<a href="<%= link[1] %>" target = "_blank" class="btn btn-primary btn-block" role="button"><%= link[0] %></a>
与父方法中的集合相同。这可行,但如果我想改变一个链接,我必须在两个地方改变它。请注意,我对rails很新,但是意识到这不可能是你应该这样做的方式!谢谢。
我的routes.rb很简单
def child
@collection1 = [
["Link 1", "http://link1.com"],
["Link 2", "http://link2.com"]
]
end
答案 0 :(得分:0)
您可以创建一个可以保存您的URL集合的模型Collections
,然后在您的控制器,子项和父项中,调用您检索集合,如:
@collections1 = Collections.find(1)
或
@collections1 - Collections.where(:collections => 1)
在此之后,您需要了解您的模型。