Volt 框架路由:何时调用操作?

Volt Framework Routing: When Are Actions Invoked?

我有一个应用程序可以根据这样的路线显示图片集:

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" 看待路由应该如何工作,因为我读到了这篇文章:

It should also be noted that if a link is clicked and the controller/view to render the new URL is within the current component (or an included component), the page will not be reloaded, the URL will be updated via the HTML5 history API, and the params hash will update to reflect the new URL. You can use these changes in params to render different views based on the URL.

以上引用自 Volt 文档对我来说意味着我不能指望路线来完成我概述的内容。

谁能阐明实现此目标的 "correct" 方法是什么?


添加@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

第二部分允许创建一个响应式数据源,其更改会在路由更改时影响页面。

视图文件更改时从视图绑定调用操作方法。在这种情况下,您的参数正在更改,但它不会影响视图文件。处理这种情况的一种方法是使用方法而不是 uploads

的实例变量

而不是设置@uploads,做这样的事情:

def uploads
  store._uploads.where({category: params._type})
end

然后在视图中使用上传,您将使用@uploads。现在,当 params._type 更改时,任何依赖于上传方法的内容都将失效并重新呈现。

希望对您有所帮助。此外,我正在考虑向视图绑定添加一些内容以使其更容易,但我认为这对它的行为有好处。