Tag: javascript

使用Rails反应JS – 使用URL访问JSON数据

我正在学习如何在我的Rails应用程序中使用React JS。 免责声明:这是我第一次搞乱JS! 我跟随Michael Chan在Rails Conf的演讲。 一切都运行得很漂亮,直到我点击CommentsContainer部分,在那里他从Rails路线获取评论数据。 我试图做同样的事情,除了在一个简单的歌曲控制器(用脚手架生成,名称和艺术家作为属性)。 我陷入了他用路径获取此数据的部分,当我尝试运行代码时,我最终得到了一个500错误页面。 我不知道如何调试我的React代码,因为浏览器控制台只显示500错误。 这是我的看法, 这是我的React代码, var SongsContainer = React.createClass({ componentWillMount(){ this.fetchSongs(); setInterval(this.fetchSongs, 1000); }, fetchSongs() { $.getJSON( this.props.songsPath, (data) => this.setState({songs: data}); ); }, getInitialState() { return { songs: [] }; }, render() { return ; } }); 任何帮助将不胜感激! 我只是看着这500页不知道该怎么做。 编辑:添加服务器日志 Started GET “/” for ::1 at 2015-08-11 […]

防止在Rails / html5游戏App中作弊(Rails 3.2 / html5 / javascript)

我想知道在下列情况下是否可以防止作弊 我有一个Ruby on Rails应用程序和一个Active Record数据库 我有玩家(模型用户),玩游戏(模型游戏),还有奖品(模特奖)。 我想要的是: 1-防止玩家欺骗/黑客赢取奖金(他赢得的奖品) 2-防止玩家在他拥有的镜头中作弊 由于用户可以赢得多个奖品并且奖品可以属于多个用户,我有很多关系:我用这个表/模型奖金列出了每个用户在游戏中赢得的所有东西(用户有很多奖金和奖品)有很多奖金) 玩家有一定数量的镜头,比方说每个用户3个。 对于1-,基本上,我猜每次用户在游戏中赢得奖品时,我都会向服务器发送一个url:mygame / com /?winning_id = 1234; game_id = 3; user_id = 6; prize_id = 4,告诉id为6的用户在id为6的游戏中以id4赢得奖品 我不希望玩家能够欺骗那个。 我怎样才能做到这一点。 任何玩家都可以使用上面的url,并以这种方式向我的服务器发送消息/动作(post)告诉他他赢了吗? 这会让它变得容易欺骗吗? 我应该加密东西/url,并使我的服务器只能理解url/邮件吗? 对于2- (镜头),我想我应该每次都向服务器端发送动作并在服务器端计算分数,但仍然不能像1-那样欺骗?

在Rails中,我们应该如何在java脚本中获取参数?

当我使用代码 我可以在页面中获取宽度值,例如 但是如果我想在同一页面的java脚本中获取宽度值,我真的不知道。 所以我的待定解决方案是隐藏div中的值,然后使用$(’div’)。text()来检索值。 所以我只想知道我们是否有其他方法来获取java脚本在rails中传递的参数?

部分Javascript(Ruby on Rails)

例如,我为post提供了很多评论。 在评论部分我有javascript将重复这么多次我有多少评论 _comment.html.erb <div id="content_”> $(“content_”).click(function() { a​lert(​’content of comment ‘​) }); 避免在源代码中重复使用javascript的最佳方法是什么? 我试图创建* _comment.js.erb *文件并将javascript放在那里,但我不明白如何使它工作。 有谁能解释我如何解决这个问题?

从Rails设置document.domain的DRY方式

我有一个Rails应用程序,它使用两个想要用JavaScript进行通信的子域。 什么是最有效地设置document.domain = mydomain.com ? 使它不那么直接的条件 在域为localhost的开发或测试环境中,这不应该是一个问题。 这也需要在不加载主JavaScript文件的某些页面上设置 条件1让我认为我要么依赖于一个正在解析location.host的根域的正则表达式,要么在erb进行切换。 条件2让我觉得最好写一次并把它放在资产管道中并在必要时包含它。 最佳潜在解决方案 创建一个类似domain_setter.js.erb的文件(下面的内容),将其添加到预编译列表,并将其包含在所有必要的位置(清单中的\\= require domain_setter或没有清单的页面的javascript_include_tag ‘domain_setter’ )。 document.domain = ‘mydomain.com’; 更新当前解决方案 此解决方案更具动态性,不需要对域进行硬编码。 仍然不是最好的,但它的工作…… 主要是 : – / (function() { var domain = /^(?:https?\:\/\/)?.*?([^.]+\.[^.]+?)(?:\:\d+)?$/.exec(location.host); if (domain == null) { document.domain = ‘localhost’; } else { document.domain = domain[1]; } })(); TL;博士 使用Rails设置多个页面的document.domain的DRY方法是什么?

Access-Control-Allow-Origin不允许jQuery Ajax POST到Rails 3.2.2

我在Heroku上运行的rails scaffold项目中有一个简单的.ajaxpost: $(document).ready(function(){ $.ajax({ type: ‘POST’, url: “http://herokuserver/images.json”, data: { image: { name: “johngalt1” } } }); }); 事实certificate,使用Chrome中的javascript控制台,我得到: XMLHttpRequest cannot load http://herokuServer/images.json. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin. 但是,当我在heroku上使用rails应用程序时,创建了一个名为=>“johngalt1”的新记录。 从我读过的所有内容我认为javascript的跨域问题会阻止创建记录并要求我使用json-p或CORS? 或者javascript跨域问题是否仅阻止通过javascript从服务器接收数据?

最有效的方法是让一个Three.js项目在rails应用程序的ruby中工作?

我正在尝试-unsuccessfully-使一个Three.js项目在Ruby on Rails框架内工作 我一直认为必须有一种更简单的方法来做到这一点,而不是我现在这样做的方式 首先,我搜索了一个关于如何将Three.js代码移植到rails上的指南/教程,并且在这个主题上找不到什么。 我认为这意味着:要么人们不经常这样做 – 或者 – 很明显,没有人费心去记录它。 接下来我用Google搜索了一个three.jsgem,在这里发现了一个 – http://rubygems.org/gems/threejs-rails (我放弃了试图开始工作 – 经过多次搞乱清单文件) 接下来,我将Three.js的源代码安装到vendor文件夹中,然后再次使用清单文件。 这次我取得了更大的成功 – 尽管在Three.js中似乎存在依赖性问题,require_tree(和我自己)都没有注意到。 所以从理论上讲,经过几个小时计算出Three.js加载序列后,我可能会让它工作,但这感觉不对。 我觉得我在这里走了一条死胡同,我错过了一些明显的东西。 有一个更好的方法吗?

格式js的Rails代码不起作用

我正在尝试实现一个复杂的任务,并遇到一个问题,从format.js调用时,我的JS代码format.js 。 我有这样代码的链接: = link_to new_user_support_letter_path, {:id => ‘contact-us’, :remote => true } 在我的user_support_letters_controller.rb : def new @letter = UserSupportLetter.new respond_to do |format| format.js {} format.html end end 在new.js.erb : alert(“rrr”); 所以,当我点击链接时没有任何反应。 单击链接的有意义的日志: I, [2016-10-19T21:47:41.130608 #1] INFO — : Started GET “/user_support_letters/new” for 172.18.0.6 at 2016-10-19 21:47:41 +0000 I, [2016-10-19T21:47:41.150411 #1] INFO — : Processing […]

使用coffeescript延迟(去抖)ajax请求

我在我的rails应用程序中使用CoffeeScript,我需要延迟远程ajax表单提交,我遇到的主要问题是去除请求,以便表单将在250ms已经过去而没有用户输入表单时发送。 现在我有一些看起来像这样的东西,显然它不会工作所以这里有一些调试输出来帮助我。 看看下面的表格,你应该知道我想要“去抖”的function是在element.keyup (event) ->function中,任何帮助都会很棒! remoteTable = bindEvents: (element) -> element.keyup (event) -> console.log(event) send: (event) -> console.log(event) **如果我能收集一些如何运作的例子,那将会非常有用吗? **我确实看到了underscore.js的方式,但是在这里,这是我的老方法:我无法解决这个问题: http://davidwalsh.name/function-debounce

Coffeescript / Javascript在服务器上不起作用

我已经实现了“无限滚动”function,如果有更多post要显示,用户可以使用该function继续向下滚动。 我遵循Railscasts,它在本地工作得很好(javascripts和will-paginate gem)。 但是,在服务器上,此function不起作用。 我所看到的只是简单的分页,并且不会应用无限滚动。 我认为这与编译或预处理有关,因为javascript在本地工作正常。 我已经尝试运行bundle exec rake assets:precompile在本地bundle exec rake assets:precompile并部署它。 此外,我尝试在服务器上运行相同的命令。 问题尚未解决。 有没有人对这个问题有一个很好的解释? 相关文件如下: 应用程序/资产/ JavaScript的/ posts.js.coffee 应用/视图/ index.js.erb的 假设js文件中的内容很好,因为该function在本地服务器上运行很大。 我几乎可以肯定问题的根源是编译。 更新: 来自Rails指南关于资产管道http://guides.rubyonrails.org/asset_pipeline.html When these files(coffescripts) are requested, they are processed by the processors provided by the coffee-script and sass gems and then sent back to the browser as JavaScript and CSS […]