首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个链接被单击到具有相同操作的页面时,触发一个操作(VoltRb)

当一个链接被单击到具有相同操作的页面时,触发一个操作(VoltRb)
EN

Stack Overflow用户
提问于 2015-08-24 19:25:12
回答 3查看 56关注 0票数 0

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

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

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

请注意,当单击索引页和图书页的链接时,URL确实会发生变化,但我遇到的问题是,当您单击另一个图书页的链接时,book不会被激活。我怎么才能解决这种情况呢?

FYI,这是一个回购,在这里这个问题可以被复制。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-26 23:51:42

事实证明,Volt计算是解决这个问题的一种方法。通过使用params集合,可以将计算附加到URL中的更改。我解决了这个问题,并让book运行在URL中的更改,如:problems/commit/5fcefc16d7b14a980f68ce572a80f25540d21636

票数 0
EN

Stack Overflow用户

发布于 2015-08-25 05:46:38

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

你想要实现的是什么?

票数 0
EN

Stack Overflow用户

发布于 2015-08-27 05:46:11

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

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

代码语言:javascript
复制
attr_reader :query
def index
  @item = store.items.where(name: params._name).first
end

你可以这样做:

代码语言:javascript
复制
def query
  store.items.where(name: params._name).first
end

这看起来可能不那么有效,但是有很多缓存,而这也同样有效。

不过,一旦我有时间,我将使它在访问数据更改时重新触发操作方法。(对不起,只是还没讲到这件事。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32190146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档