社交媒体网址应该位于何处?现在我想把它放在lib
中。这也是正确的方法,还是应该把它放在帮手或其他东西中。我觉得我将来可能会从外面看到这一点。
另外,如果有一个比#34; Marketing"更好的名字,我很乐意替换它
module MyApp
class Marketing
def self.facebook_url
end
def self.twitter_url
end
def self.tumblr_url
end
def self.blog_url
end
end
end
测试:
scenario 'with MyApp contact information' do
visit root_path
expect(page).to have_content(MyApp::Marketing.blog_url)
expect(page).to have_content(MyApp::Marketing.facebook_url)
expect(page).to have_content(MyApp::Marketing.twitter_url)
expect(page).to have_content(MyApp::Marketing.tumblr_url)
end
答案 0 :(得分:0)
Rails对此没有意见,但是,应用程序助手对我来说似乎更合适。
为什么呢? Rails的UrlHelper类似乎是最近的亲戚,但除此之外,它更像是一种直觉。但是,帮助程序应该很小,所以如果你需要很多代码来构建URL,你可能想要将繁重的工作转移到一个单独的类并为所有人编写一个app helper(例如social_url:facebook,...) 。你把这个支持类放在哪里,lib似乎是个好地方,其他人更喜欢app / classes。我经常将可重复使用的,混乱的代码提取到出售的宝石供应商/宝石中,这使得应用测试套件保持苗条和快速。
答案 1 :(得分:0)
如果您没有找到确凿的答案,我们已使用rails-config gem创建了一系列重要信息:
#config/settings.yml
social:
facebook: "url"
twitter: "url"
linkedin: "url"
youtube: "url"
fusion: "url"
然后我们用一个简单的帮助器调用数据:
#app/helpers/application_helper.rb
def setting(option, type)
record = Option.find_by name: "#{option}_#{type}"
return record ? record.value : Settings.send(option).send(type)
end
正如您所看到的,我们使用数据库提供了一些灵活性,但底线是Settings.social.youtube
等仍然是默认选项