0

http://localhost:3000/books,我有一个索引页,其中有一个书籍列表。

在此处输入图像描述

当您单击其中一个链接时,它所绑定的操作book会被触发:

在此处输入图像描述

但是,当您单击其中一个书页中的链接之一时,book不会触发该操作:

在此处输入图像描述

请注意,从索引页面和书籍页面单击链接时,URL 确实会发生变化,但是我遇到的问题是,book当您单击另一本书的书籍页面的链接时,该 URL 不会被激活页。我该如何解决这样的情况?

仅供参考,这是一个可以重现此问题的存储库。

4

3 回答 3

0

该方法book不会被调用两次,因为您的视图已经设置好。url 中的更改只会在您的视图中触发响应式更新。

你想达到什么目的?

于 2015-08-25T05:46:38.387 回答
0

事实证明,伏特计算是解决这个问题的一种方法。通过使用该params集合,您可以将计算附加到 URL 中的更改。我解决了这个问题并book在 URL 中运行,如下所示:https ://github.com/ylluminarious/volt_action_problems/commit/5fcefc16d7b14a980f68ce572a80f25540d21636 。

于 2015-08-26T23:51:42.730 回答
0

这么晚才回复很抱歉。这是我要修复的列表中的一个已知问题。正如 GDP2 所述,您可以使用 .watch!处理它,或者可能更好的方法是以更实用的方式编写控制器,以便从参数中提取的数据用于方法而不是设置实例变量。

因此,例如,如果您在查询中使用参数,而不是执行以下操作:

attr_reader :query
def index
  @item = store.items.where(name: params._name).first
end

您可以执行以下操作:

def query
  store.items.where(name: params._name).first
end

这可能看起来效率较低,但有很多缓存,这几乎同样有效。

不过,一旦我有时间,我会让它在访问的数据发生变化时重新触发 action 方法。(对不起,还没来得及。)

于 2015-08-27T05:46:11.003 回答