Tag: ruby

使用ajax请求在同一页面中显示部分内容

我是铁杆新手,我正在尝试为学校做一个简单的项目。 我已经按照以下方式生成了一个脚手架。 rails generate scaffold Book title:string content:text code:string 我正在尝试做的是,当我点击一个链接时,在同一页面上显示一个div的书列表(localhost:3000 / books)。 我试图按照这个程序但它似乎不起作用,当我点击/ books页面末尾的链接时,页面上没有任何可见的渲染 这是我的books / index.html.erb Books Title Content Code my books_controller的索引方法 def index @books = Book.all respond_to do |format| format.html format.js end end _books偏 和books / index.js.erb $(“#content”).html(“”); 当我点击应该呈现部分的链接时,我在终端中得到了这个,并且页面上没有显示任何内容。 Started GET “/books” for 127.0.0.1 at 2017-05-12 17:35:02 +0200 Processing by BooksController#index as JS […]

如何在大文本字段中记录更改?

假设我希望用户在20分钟内写一个故事。 用户完成后我想回放故事编写过程,这样我就可以看到用户如何去做。 我该怎么办? 显然,我不想看它的每一秒,但我想看到每当“大变化”时的快照。 “大变化”应该由我来定义。 它可以是X量的字符添加或减少。 我想到了某种方式试图连续监视文本框的变化,然后每次有“大的变化”时将文本作为字符串存储在数组中。 然后重播这个,我将播放1秒延迟的字符串数组。 有人想过更好的方法来做这件事或知道一个有用的图书馆吗? 谢谢!

只有最后一篇文章的评论显示在弹出窗口(Ruby on Rails)

我在每个post下都有评论。 所有post和评论都可以通过链接/用户/用户名查看 我正在使用facebox(基于jQuery的灯箱)弹出窗口,评论显示得很好。 唯一的问题是弹出窗口中只显示最新post的评论。 所有弹出链接都显示相同的注释。 例如,如果最新post有5条评论,我可以点击post下面的评论链接,在弹出窗口中查看。 但是,当我向下滚动并转到带有1条评论的其他post时,当我点击评论链接时,我会看到相同的5条评论。 如何确保仅显示与特定post关联的评论? 这是我的show.html.erb jQuery(document).ready(function($) { $(‘a[rel*=facebox]’).facebox() }) Browse 我的micropost.html.erb,评论视图位于底部 ‘Avatar’, :class => ‘avatar’, :height => “10%”, :width => “10%”) %> ago 最后是comment_form.html.erb Comment “facebox-#{micropost.id}” do %> Comments

Rails:nil的未定义方法`model_name’:NilClass

如何创建单独的页面,同时仍能从控制器和模型中获取用户信息? 例如,我想拥有单独的页面,但仍然使用产品控制器中的相同信息。 views / product / order.html.erb 然而,当我添加一个simple_form_for时,我得到一个错误 基本上我想要的是一个提交产品信息的separte页面。 如果不是,我很乐意在同一页面内做到这一点并拥有像这样的旋转simple_form,而无需创建多个页面。 http://malsup.com/jquery/cycle/ 例: products_controller.rb class ProductsController < ApplicationController before_action :set_product, only: [:show, :edit, :update, :destroy] def index @products = Product.where(availability: true) respond_with(@products) end def show end def new @product = Product.new end def edit authorize! :manage, @product end def create @product = current_user.products.new(product_params) @product.save respond_with(@product) end […]

为什么没有在这里触发ajax请求?

所以我有一个自动填充字段,用户可以在其中选择现有标签或创建新标签。 如果用户创建新标签,则按下表单按钮,它会向video控制器中的更新操作发送POST请求,该操作将请求作为AJAX处理,并且标记显示在字段上方。 现在,问题是当用户从建议列表中选择标签时。 默认情况下,jQuery UI自动完成插件会将所选元素附加到字段内,然后用户必须按下表单按钮。 但是,我想通过在从建议列表中选择标签时自动添加标签来为用户节省一些工作。 因此,我在application.js文件中有这个代码: select: function(event, ui) { var url = $(‘.edit_video’).attr(‘action’); var val = ui.item.topic.name; $.ajax({type:”PUT”, url:url, data:{video:{topic_names:val}}}); return false; } 当从列表中选择元素时,成功地将PUT请求发送到更新操作。 但是,请求不会作为AJAX处理。 标记已成功添加,但仅在页面刷新后才添加。 我希望将请求作为AJAX处理。 我怎样才能做到这一点? 我猜这个问题与以下事实有关:当你按下表单按钮时, :remote => true选项告诉rails查找format.js (我在更新操作中有),但是当按钮时没有按下,从列表中选择一个元素,Rails不知道要查找JS。 我怎么知道?

Ruby / Rails / AJAX / JQuery – 在链接上单击,传递参数并执行控制器操作

我正在尝试使用单击链接在我的控制器中执行和操作,称为“是”,但这样做是客户端而不是每次用户点击时都要刷新。 在我有一个link_to路由到名为“yes”的动作并传递模型的id之前,我称之为’event’ (in view) match ‘user/:id/yes’ => ‘user#yes’, :as => “yes” {in routes.rb) 问题是每次用户点击链接时页面会在执行yes操作时刷新,因此如果我可以告诉后端执行客户端操作,它会流得更顺畅。 S0我在这里找到了一个引用: 在rails3中从javascript执行controller / action 并查看了文档: http : //api.jquery.com/jQuery.ajax/ 想出了这个。 如果post在上一个路线上成功,则更改链接的css类(更改颜色)。 $.ajax({ type: “POST”, url: “/user/” + $(this).attr(‘event’) + “/yes/”, success: function(){ $(“.like”).click(function() { if ($(this).hasClass(“selected”)) { $(this).addClass(“selected”); return false; } }); 我还补充说,这是控制器的底部,正在使用所需的javascript。 respond_to do |format| format.html { } format.js end 所以现在我的link_to看起来像这样 […]

为了触发ajax错误,从控制器返回不同于200的代码被认为是一种好习惯吗?

我有以下代码(它是一个远程表单) def something @user = User.find_by_email(params[:email]) @success = true @error = nil if !@user @success = false @error = “No such user” elsif !@user.some_condition @success = false @error = “User did not pass condition” end respond_to do |format| format.json { render “my_json_view”,:status => @success ? 200 : 403 } end end 在my_json_view我做了类似的事情: json.response do |json| […]

ruby on rails:使用JQuery提交一个单击check_box的表单

我有一张表格。 我在number_field标记中添加了一个JQuery onchange submit。 我想为check_box_tag做同样的事情。 如果您单击一个复选框,我希望表单被提交。 我尝试了很多选择,但我没有得到它。 希望您能够帮助我。 “list”, :remote => true) do %> @size, :onchange => (“javascript: document.list.submit();”)) %> Equipment true, :onclick => (“javascript: document.list.submit();”)}) %>

jQuery对控制器动作的调用并不像预期的那样

我有以下jQuery : var request = $.get(“getPerforceSuites”); request.success(function(result){ alert(“res: ” + result) }) request.error(function(jqXHR, textStatus, errorThrown) { alert (“err: ” + errorThrown); }) 以及routes.rb中的以下条目: get “getPerforceSuites”, to: “perforce_sync#getPerforce” 在我的perforce_sync_controller.rb中 : def getPerforce # return getRemoteSuites puts “++++++++++++++++++++++++++++++++++++++” puts “Called getPerforce” puts “++++++++++++++++++++++++++++++++++++++” return “Hi!” end 最初这不起作用 – 直到我在/ views / perforce_sync中创建一个空的getPerforce.erb.html文件…现在我可以自信地说,getPerforce操作肯定被调用,因为3“put”行出现在rails中服务器日志。 但是,我原本期望“alert(”res:“+ result)”显示“嗨!”……但是,我得到了一大堆HTML,看似是一个文档标题(但是从哪个文件,我我不知道!): res: Test1 ***… […]

AJAX / HTTP问题

我有一个链接的代码,评估是否有标签来确定链接文本应该说什么: ‘edit_topics_link’, :class => ‘edit’ %> 问题是我的标记系统完全使用AJAX更新,而这个链接文本没有,所以它只在页面刷新后更新为正确的链接文本。 如何使用AJAX更新文本?