我认为自己是Rails的高级初学者(以及总体上的web设计)。我有这个项目,我很难思考如何实现最近的发展。
最初,该项目是一个简单的博客,供企业发布文章,以促进他们的公司。这是专为特定城镇的企业而设的,我没有遇到任何困难。现在,我们正在努力扩大范围,让这个网站迎合许多城镇。
我们希望有一个主页,您可以选择一个城镇。这就把你带到了这个城市的商业博客文章的列表中。您可以导航到一个目录,联系我们表单,配置文件页等。我的问题是,我希望每个城镇的行为像迷你网站,所以该目录只显示与城镇相关的业务和标题图像的变化,以反映您选择的城镇。
我最初解决这个问题的方法是建立一个城镇脚手架,并在城镇、用户和岗位之间建立联系。问题是以某种方式“存储”选定的城镇,这样我就可以在目录中只显示特定城镇的业务。
现在,在贴子模型中
belongs_to :user
在用户模型中
has_many :posts
has_many :towns
我在城镇控制器中有一个操作来处理只有行的目录:
@users = User.order('trading_name ASC').where(:town => @town.id.to_s)
然后我想在目录视图中显示这些用户。
在我的城镇管理员中也有以下内容
before_action :set_town, only: [:show, :edit, :update, :destroy, :directory]
老实说,我不能把头脑完全集中在所需要的联想上,即使这是正确的道路。就目前情况而言,当我试图访问目录视图时,我会得到以下错误
Couldn't find Town without an ID
它在城镇控制器中引用了以下方法(我使用的是friendly_id gem)
def set_town
@town = Town.friendly.find(params[:id])
end
我是走在正确的道路上与这些联系(和遗漏的东西),还是有一个更好的方法,我可以采取。另外,我希望我已经解释清楚了。请问一下是否有什么东西让人困惑。
发布于 2014-10-07 10:42:32
我不知道你的具体要求是什么,但我想说:
用户可能不会“有很多”城镇。
用户确实“有很多”帖子。
一个城镇确实“有很多”职位。
一个帖子属于一个城镇,也是一个用户。
然后,在您的主页上,您将有一个带有城镇下拉列表的表单,它应该概括为一个类似choose_town
之类的操作。
您的choose_town
操作应该在Cookie中保存城镇的名称或id。你知道饼干吗?它们基本上允许您在请求之间为特定用户保存少量信息。它们存储在用户浏览器中,但在每次请求时都会从服务器上来回发送。请参阅overview.html#cookies
然后,调用每个请求的set_town
方法将在cookie中查找正确的城镇。
编辑:@japed提到的会话以及cookie。会话由cookie标识--但是,存储在会话中的信息保存在服务器上,不会在浏览器和服务器之间来回发送。在这种情况下,两者都很可能没问题。
https://stackoverflow.com/questions/26233997
复制相似问题