问题标签 [rjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
510 浏览

ruby-on-rails - 页面替换为 RJS

我尝试在我的一个 Rails 项目中实现投票功能。我使用以下代码(在 vote.rjs 中)将页面替换为部分模板(_vote.rhtml)。但是当我点击时,投票数无法立即更新。我必须刷新页面才能看到更改。

投票.rjs

page.replace("votes#{@foundphoto.id}", :partial=>"vote", :locals=>{:voteable=>@foundphoto})

部分模板如下:

_vote.rhtml

">
<%= link_to_remote "+(#{voteable.votes_for})",
:update=>"vote",
:url => { :action=>"vote",
:id=>voteable.id,
:vote= >"for"} %>
/
<%= link_to_remote "-(#{voteable.votes_against})",
:update=>"vote",
:url => { :action=>"vote",
:id=>voteable .id,
:vote=>"反对"} %>

有任何想法吗?谢谢。

0 投票
1 回答
789 浏览

ruby-on-rails - 在动作渲染之前向 RJS 添加视觉效果

我刚开始使用 RJS,这很棒,但是我习惯于在 link_to_remote 等中放置视觉效果,我不确定如何在触发遥控器之前和之后触发动作。

以这个链接为例:

HTML

控制器:

RJ:

那么 RJS 是否主要用于渲染动作后的视觉效果,例如微调器应该放入 link_to_remote 中call_backs?这是做事的好方法吗?

0 投票
1 回答
1008 浏览

ruby-on-rails - 多次从控制器调用 Javascript 函数(在 Rails 中)

我有一个多文件上传表单(html5),并希望在其中一张图像传输到我的图像服务器后立即更新我的视图。

目前,我使用 ajax 上传文件,并在所有图像都传输到图像服务器时使用response_to_parent更新我的上传视图。

每次操作是否可以多次从控制器调用 Javascript 函数?

谢谢,迈克尔

0 投票
1 回答
1916 浏览

javascript - 为动态 div 插入 AJAX page.insert_html

我在 AJAX 为帖子创建评论时遇到了一点问题。一切正常,但我在 index.html.erb 视图中执行此操作,因此 create.js.erb 正在找到第一个显示“comments”的 div 并在那里插入评论。

我知道如何使用以下方法创建特定于帖子的 div:

但是如何使用 create.js.rjs 引用该 div?我假设它会影响第一行:

它说:comments,但不确定这里的语法。:comments_<%= post.id %> 之类的东西看起来很直观,但因为它不是一个无法正常工作的 .erb 文件。想法?

这是我的代码:

/comments/create.js.rjs

0 投票
3 回答
7051 浏览

ruby-on-rails - 无法从 Rails 控制器呈现 JavaScript

当用户在表单中输入无效的内容时,我想显示一个带有错误消息的模式窗口,但如果一切正常,则呈现另一个操作。但是,当我尝试显示模态窗口时

仅显示实际调用的 JavaScript:

0 投票
3 回答
948 浏览

ruby-on-rails - 使用 RJS/AJAX 更新多个 div

我成功地使用 RJS 在 page.replace.html create.js.rjs 上实现 AJAX。我正在尝试更新两个位置而不是一个,在观看Ryan Bates Railscast之后,我非常接近(我认为),但我的 /views/likes/create.js.rjs 文件的语法有问题。情况如下:

位于 /views/likes/create.js.rjs 的代码如下:

我的问题在于第二行。div“计数器”在 /views/question/show.html.erb 页面中显示以下代码:

通过观看屏幕投射,我相信我的错误与第二行的语法有关。具体来说,他提到您不能使用本地实例变量,但不确定如何进行更改。想法?

更新:这是我得到的错误:

更新:

类 LikesController < ApplicationController

更新:这是喜欢的形式:

0 投票
2 回答
466 浏览

ruby-on-rails - Ruby on Rails 的 RJS 能否提供静态 Javascript 代码来处理用户交互?

所以看起来在 RoR 上,当 Ajax(使用 form_remote_tag)返回成功代码时,也会返回 Javascript 来处理视觉效果。(这是RJS机制)

使用 Fiddler,我确实看到了以下响应:

是否存在代码相当大(如 1 或 2k)的情况,RJS 可以使用某种已经加载的静态 Javascript 来处理效果?

有没有其他方法可以使用页面已经加载的静态 Javascript?必须是原始的 Javascript 并使用 Prototype 的 Ajax 成功响应来调用静态 Javascript 代码,还是可以是一些与 RJS 相关的 Rails 机制?

0 投票
2 回答
1757 浏览

ruby-on-rails - 使用 RJS 将 innerHTML 替换为真实的实例变量

我一辈子都无法让 RJS 用实例变量的属性替换元素的 innerHTML,即类似@thing.name

我将展示所有代码(从实际项目中简化,但仍然完整),我希望解决方案对某人来说是显而易见的......

在 RoR 中,我制作了一个显示随机汉字的简单页面。

这是一个Word具有属性chinese和的对象english

点击标题为“这是什么?”的链接 使用 RJS显示english属性。目前,它还隐藏了“这是什么?” 链接并显示“尝试另一个?” 只是重新加载页面的链接,有效地从一个新的随机字符重新开始。

这很好,但是页面上还有其他元素可以进行自己的数据库查询,所以我想通过 AJAX 调用加载一个新的随机字符,而不理会页面的其余部分。

事实证明,这比我预期的要难:使用 link_remote_to 和 page.replace_html 替换 html 没有问题,但我无法让它显示任何包含实例变量的内容。

我有一个 Word 资源和一个 Page 资源,它有一个主页,所有这些有趣的地方都在这里发生。在 PagesController 中,我做了几种获取随机单词的方法。任何一个都可以正常工作...

这是代码:

顺便说一句,SQL 调用:limit => 100只是为了以防我想出某种方法来循环遍历这些随机单词。目前它没有用。此外,据我所知,“rand()”是 MySQL 特有的。

在主页视图(它是 HAML)中,我有这个:

请注意,在这种情况下,# 代表 div(具有给定的 id),而不是注释,因为这是 HAML。

“字符”部分看起来像这样(它是 erb,没有真正的原因):

reveal_character.rjs 文件如下所示:

这一切都很好。

但是,如果我尝试link_to "try another?"变成link_to_remote,并将其指向一个用新的东西替换“字符”元素的 RJS 模板,它只有在我用静态文本替换 innerHTML 时才有效。如果我尝试在那里传递一个实例变量,它永远不会起作用。

例如,假设我在 Pages#home 下定义了第二个随机词...

我会在@random_second = @random_words[2]那里补充。

然后,在主页视图中,我将替换“尝试另一个?” 链接(以前指向root_path),其中:

我将在 app/views/words/second_character.rjs 中创建新的 RJS 模板,像这样的简单测试表明它正在工作:

但是,如果我将其更改为:

我收到一个错误,说我给它一个 nil 对象:

ActionView::TemplateError (undefined method `english_name' for nil:NilClass) on line #1 of app/views/words/second_character.rjs: 1: page.replace_html("character", "#{@random_second.english}")

当然,实际上实例化@random_second、@random_third 等等在一个真正的应用程序中是可笑的(我最终会想出一些更好的方法来保持抓取一个新的随机记录而不重新加载页面),但关键是我不知道如何让任何实例变量在这里工作。

这甚至没有接近我渲染包含我指定的对象的部分的理想解决方案,如下所示:

由于我无法让实例变量直接工作,我显然无法通过部分工作。

我尝试了各种方法,例如:

或者

我已经尝试在所有地方添加这些 -link_to_remote最明显的是在选项中 - 并研究参数中传递的内容,但无济于事。在这一点上,我意识到我不知道自己在做什么。

这是我在这里的第一个问题。我错误地提供了所有必要的代码,而不是简短。任何帮助将不胜感激。

0 投票
1 回答
1681 浏览

ruby-on-rails - page.insert_html 未正确呈现部分

以下是在 text_field 中。

以下位于 display_questions_search_results.rjs 中。

每当用户键入时,我都想在数据库中搜索与文本字段中的关键字匹配的任何元组。然后,显示这些结果。但是,目前,_suggestions.haml 只包含单词“suggestions!!”。

但是,而不是看到“建议!!” 在suggestionsdiv 标签中,我得到:

我一直在试图找出为什么要这样做,但我发现以前提出的问题似乎比我正在做的更复杂......

0 投票
1 回答
279 浏览

ruby-on-rails - 在 Rails 中使用 RJS 创建记录

所以我看过http://railscasts.com/episodes/43-ajax-with-rjs

但我有一个问题:

在我看来,我有以下几点:

这行得通。

使用 create.rjs 更改此 div 中的内容,我的 create.rjs 文件中有以下内容:

page.replace_html :testly, :partial => 'test'

简单来说,这应该只是刷新部分吧?但它不起作用......希望有任何建议!


同样关于检查错误-我还不能(因为它在另一台计算机上),但是如果我将 create.rjs 中的 :partial => "test" 替换为 "..." 它只会替换它很好 - 让我相信这不是 ajax 的问题?


我做了更多的测试,部分声明有效 - 似乎不起作用的是通过 javascript 调用部分中的代码。

部分代码为: