Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在rails中添加比较功能_Html_Ruby On Rails_Ruby_Button - Fatal编程技术网

Html 在rails中添加比较功能

Html 在rails中添加比较功能,html,ruby-on-rails,ruby,button,Html,Ruby On Rails,Ruby,Button,我在添加某个功能时遇到了一些问题。我在一个买卖网站上工作,我希望能够比较帖子。以下是我目前掌握的情况: 在posts视图中: <%= button_to "Add to Compare", :action => "addCompare" %> “添加比较”%> 在相应的控制器中: @@a = Array.new() def addCompare @@a << Post.id end @@a=Array.new() def添加比较 @@视图路径“/hom

我在添加某个功能时遇到了一些问题。我在一个买卖网站上工作,我希望能够比较帖子。以下是我目前掌握的情况:

在posts视图中:

<%= button_to "Add to Compare", :action => "addCompare" %>
“添加比较”%>
在相应的控制器中:

@@a = Array.new()

def addCompare
   @@a << Post.id
end
@@a=Array.new()
def添加比较
@@视图路径“/home/mja32/470repo/traders/app/views”、“/var/lib/gems/1.8/gems/devise-1.4.2/app/views”

所以我猜它试图重定向到一个视图。我如何防止它这样做?我想要这个按钮做的只是将帖子的id添加到数组中,而不是别的

提前感谢,


Matt

首先,在控制器的类变量中存储持久性数据不会按您希望的方式工作。不能保证
@@a
在下一次
addCompare
调用中将是同一个数组;例如,您的下一个
addCompare
调用可以由另一个进程处理。另外,如果两个不同的客户端调用
addCompare
,会发生什么情况?您真的想将他们的数据混合在一堆中吗?可能不会。您的第一个任务是将
@@a
替换为真正的每用户持久存储

如果您不想从控制器返回任何内容,只需在结束时执行以下操作:

这将告诉Rails已经呈现了一些内容,因此它不需要尝试默认的呈现操作(即呈现
posts/addCompare
视图),并且只向客户端返回200个状态代码

一旦安装到位,您可能需要使用以下工具调整按钮:

:remote
-如果设置为true,将允许不引人注目的JavaScript驱动程序控制提交行为。默认情况下,此行为是ajax提交

因此:

<%= button_to "Add to Compare", { :action => "addCompare" }, { :remote => true } %>
:action
用于
选项
,而
:remote
用于
html\u选项
,因此必须使用
{}
显式设置哈希;您可以将
选项
用大括号括起来:

<%= button_to "Add to Compare", { :action => "addCompare" }, :remote => true %>
“addCompare”},:remote=>true%>

但是我更喜欢手工包装它们的一致性。

addCompare
@@a=Array.new()
eww。不是鲁比!您真的需要阅读一些关于Ruby和Rails的教程……谢谢。你提出了一个很好的观点。我非常担心把基本功能写下来,以至于我还没有考虑细节。对不起,如果我是愚蠢的,但我添加了上面的代码行,我得到了一个空白页。我希望它保持在同一个帖子页面上。嗯,谢谢,但在我点击后仍然是一个空白页面button@Matt:您是否包括了所有常见的
rails.js
preamble?我已经看到了/layouts/application.html.erb。这是正确的吗?我们好像在开一罐虫子,对此我深表歉意。我被推到了深水区,不知道怎么游泳。所以,对你的问题的简短回答是“不”。我今天太急了,而且很邋遢
按钮\u to
接受两个散列参数,您希望
:remote
在第二个参数中,请参阅我的更新。很抱歉造成了混乱,我应该更小心一点。
button_to(name, options = {}, html_options = {})
<%= button_to "Add to Compare", { :action => "addCompare" }, :remote => true %>