我有一个应用程序,将根据以下路线显示图像集合:
client '/{{_type}}', controller: 'main', action: 'index'
client '/', {}
我的想法是,MainController#index
我可以查看params._type
并执行以下查询:
@uploads = store._uploads.where({category: params._type})
我的导航栏中包含以下链接:/
,/spotlight
,/nature
等。第一个匹配默认路由,因此调用index
操作。然后单击链接到/spotlight
的导航项再次调用index
操作(预期响应)。但是......如果我单击nature
的导航项,则不会调用index
操作,则不会刷新集合,也不会显示与该类别对应的图像。
我可能会采用“Rails”视图来说明路由应该如何工作,因为我读到了这个:
来自Volt文档的上述引文告诉我,我不能指望完成我所概述的路线。
任何人都可以澄清实现这一目标的“正确”方法是什么?
添加@ ryanstout的答案,因为它会通过适当的代码格式化来影响它。
client '/{{_type}}', controller: 'main', action: 'index'
# ^^^ Note that the underscore may not be included
# here or you will have an undefined value
def uploads
store._uploads.where({category: params._type})
end
第二部分允许创建一个被动数据源,当路由发生变化时,这些变化会影响页面。
答案 0 :(得分:1)
当视图文件更改时,将从视图绑定调用操作方法。在这种情况下,您的参数正在更改,但它不会影响视图文件。处理这种情况的一种方法是使用方法而不是uploads
不要设置@uploads,而是执行以下操作:
def uploads
store._uploads.where({category: params._type})
end
然后在视图中使用您将使用@uploads的上传。现在,当params._type发生变化时,取决于uploads方法的任何内容都将失效并重新呈现。
希望有所帮助。另外,我正在考虑在视图绑定中添加一些内容以使其更容易,但我认为它的行为与它一样好。