Tag: railscasts

如何使用jquery无法正常工作来限制嵌套表单字段

我正在关注嵌套表单字段中的Ryan Bates剧集,并添加了第2部分末尾建议的jquery。一切正常(我可以添加字段和删除字段)。 我现在想限制您可以在表单中添加的字段数。 在我的application.js我有 function add_fields(link, association, content) { var new_id = new Date().getTime(); var regexp = new RegExp(“new_” + association, “g”) $(link).parent().before(content.replace(regexp, new_id)); } 正如莱恩贝茨写的那样。 阅读另一篇文章我改变了现在的行: function add_fields(link, association, content) { if($(“.fields input”).length < 5) { var new_id = new Date().getTime(); var regexp = new RegExp("new_" + association, "g") $(link).parent().before(content.replace(regexp, new_id)); } } 然而,这不起作用,我在这里做错了什么。 […]

如何使用RSpec测试Rails 4应用程序并从Railscast#53(修订版)中自定义exception处理?

使用此Railscast剧集 , ActiveRecord::RecordNotFound错误最终会重定向到ErrorsController和/app/views/errors/404.html.erb视图。 但是,我在我的一个测试中有以下内容(Item belongs_to List): scenario “item cannot be created without a list” do visit new_item_path # Because it’s not the proper nested new_list_item_path(@some_list) path, # @list is not created in the ItemsController. page.should have_content(‘Not Found’) page.status_code.should be 404 end 但是,测试失败并出现以下情况: Failure/Error: visit new_item_path ActiveRecord::RecordNotFound: Couldn’t find List without an ID 因此控制器在需要列表时正常工作,但测试失败,因为它没有考虑应该将用户发送到404的自定义exception处理。 如何正确测试重定向?

使用Active Record Reputation System gem,当我按投票排序时,不会发生排序

在信誉系统gem的RailsCast之后,我将以下代码添加到microposts_controller中 def index @microposts = Micropost.paginate(page: params[:page]).find_with_reputation(:votes, :all, order: “votes desc”) @micropost = current_user.microposts.build end 但除了我在模型中设置的默认范围外,我的索引操作中没有排序 在我的微博模型中,我有 class Micropost { order(‘created_at DESC’) } 如果我将默认范围更改为 default_scope -> { order(‘votes DESC’) } 它的工作方式只适用于索引页面,但会破坏我的所有其他页面。 我尝试删除默认范围并留在find_with_reputation方法中,但它仍然没有通过投票排序。 我也尝试在像这样的微博模型中的方法中定义范围 def self.popular find_with_reputation(:votes, :all, {:order => ‘votes desc’}) end 并像这样在microposts_controller中创建代码 def index @microposts = Micropost.paginate(page: params[:page]).popular @micropost = current_user.microposts.build end 它仍然没有按投票排序。 以下是访问微博索引页面的日志输出的副本https://gist.github.com/anonymous/9745552 […]

嵌套模型表单 – Railscast#196修订 – 通过jQuery添加字段无法正常工作

我正在遵循Railscast#196修订版 ,一切都基本上没问题,但我无法在嵌套表单中添加新字段。 “删除字段”function运行良好,但点击“link_to_add_fields”后,浏览器会跳转到页面顶部,并且不会显示新字段。 这个轨道广播已经有很多问题了,比如这里或这里 ,我试着阅读所有这些问题,但大多数是指2010年的原始演员。我现在被困了几个小时,我不能弄清楚,我的问题在哪里。 对不起,如果它是一个新手的错误,我对rails很新。 任何帮助将非常感激! 我使用Rails 3.2.13,Ruby 1.9.3来遵循#196修订版 车型/ post.rb class Post :destroy accepts_nested_attributes_for :postfiles, allow_destroy: true end 车型/ postfile.rb class Postfile < ActiveRecord::Base attr_accessible :dropbox, :gdrive, :post_id belongs_to :post end 意见/职位/ _form.html.erb 意见/职位/ _postfile_fields.html.erb postfiles.js.coffee jQuery -> $(‘form’).on ‘click’, ‘.remove_fields’, (event) -> $(this).prev(‘input[type=hidden]’).val(‘1’) $(this).closest(‘fieldset’).hide() event.preventDefault() $(‘form’).on ‘click’, ‘.add_fields’, (event) -> time = […]

未定义的方法`key?’ 为零:NilClass

我是Rails的新手,正在关注Ryan Bate关于如何制作一个简单的身份validation系统的教程( http://railscasts.com/episodes/250-authentication-from-scratch?autoplay=true )我正在经历它但得到了这个错误:` NoMethodError in UsersController#new undefined method `key?’ for nil:NilClass Rails.root: C:/Sites/authentication` 我真的不知道这意味着什么,因为我只是一个初学者,但这些是我的文件: 用户控制器: class UsersController “Signed up!” else render “new” end end end new.html.erb: Form is invalid 的routes.rb Authentication::Application.routes.draw do get “sign_up” => “users#new”, :as => “sign_up” root :to => “users#new” resources :users end 用户模型 class User create validates_presence_of :email validates_uniqueness_of :email […]

未定义的方法`admin?’ 为零:NilClass

我跟着railscast#250来自Scratch的身份validation并且得到了很好的工作。 现在我只想在我的索引页面上显示编辑和销毁链接给admin用户。 我已经设置了mu用户数据库,其中包含一个admin boolean字段,并尝试在另一个模型(hikingtrails)的视图中放置一个简单的if语句,只显示管理员用户的某些链接,但是当我尝试它时,我得到了这个错误, undefined method ‘admin?’ for nil:NilClass undefined method ‘admin?’ for nil:NilClass 数据库架构 create_table “users”, :force => true do |t| t.string “email” t.string “password_digest” t.boolean “admin” t.datetime “created_at”, :null => false t.datetime “updated_at”, :null => false end 用户模型 class User true has_secure_password end 应用控制器 class ApplicationController < ActionController::Base protect_from_forgery # fetch the currently […]

通过AJAX将动态字段添加到嵌套表单

我一直在观看和重现我的应用程序上的这些railscast: 196-nested-model-form-part-1和197-nested-model-form-part-2 。 我还没有亲专业账户,因此我无法观看修订后的剧集。 我正在rails4(edge)下开发,并且不推荐使用link_to_function而转而使用unobtrusive JS(这很棒)。 我将保留上述railscast的示例(即调查/问题)。 我想做的是使用问题的部分通过不引人注目的JavaScript,我只是不知道我应该怎么做以及在哪里做到这一点。 我想到了两种方法: 第一种方法是在我的app/assets/javascripts一个带有函数add_question的文件add_question但我不知道如何从这里使用我的部分。 其他方法是在我的SurveyController中创建一个新的动作,该动作将使用部分问题进行响应,但我对调查控制器中的问题特定于行动的事实感到困扰。 我不禁认为必须有更好的方法来做到这一点。

使用jquery TokenInput而没有默认的’name’

我试图使用这里找到的jquery tokeninput: http ://loopj.com/jquery-tokeninput/按照铁路指南的指南: http: //railscasts.com/episodes/258-token-fields 默认情况下,它需要表/ json上的“名称”列。 有任何方法可以自定义将其更改为其他内容(在我的情况下,’account_number’)? (在reailcast中,他说如果你没有’名字’栏,你需要额外的定制)

Rails:使用jquery tokeninput(railscast#258)创建新条目

我已经成功地实现了新的艺术家条目的添加,这些条目未包括在Ryan Bates的轨道广播中#258 http://railscasts.com/episodes/258-token-fields 换句话说,用户可以输入一个艺术家名称,该名称将使用jquery tokinput自动完成。 但是,我希望自动填充结果只显示由该个人用户创建的艺术家名称。 这有意义吗? 一个更好,更容易理解的例子是collection.rb,其中用户创建post并为post指定一个“集合”,但他们应该只能将post添加到他们自己创建的集合中。 这是使用artist_tokens作为虚拟属性的post表单: true, :html => {:multipart => true} do |f| %> f.object %> @post.artists.map(&:attributes).to_json %> 这会通过在post表单上输入artist_tokens字段的值来查找艺术家,并且还添加了“添加{params [:q]}”选项以添加新条目。 class ArtistsController < ApplicationController def index @artists = Artist.where("name like ?", "%#{params[:q]}%") results = @artists.map(&:attributes) results < “Add: #{params[:q]}”, :id => “CREATE_#{params[:q]}_END”} respond_to do |format| format.html format.json { render :json => […]

Rails:用户使用以下命令销毁不相关的对象后退出:remote => true

我正在关注http://railscasts.com/episodes/250-authentication-from-scratch进行简单的身份validation。 它按预期工作。 我的应用程序中有一个模型,其中包含以下partial : ‘Are you sure?’, :method => :delete, :remote => true %> 它在index.html.erb调用如下: @posts.reverse %> destroy.js.erb如下所示,如果对象被成功销毁则调用它。 $(‘#’).css(‘background’, ‘red’); $(‘#’).hide(); 单击delete按钮后, post对象将被正确删除, destroy.js.erb也会正确呈现。 但不知何故,用户已注销。 以下是我的posts_controller.rb的代码: def destroy logger.error ‘in destroy’ @post = Job.find(params[:id]) @post.destroy respond_to do |format| format.html { redirect_to(posts_url) } format.xml { head :ok } format.js end end 任何线索为什么会出现这种行为? 并且,如果我从delete链接中删除:remote => true ,那么用户仍然登录。我在session的destroy方法中有日志语句,在任何一种情况下都不会被调用,但如果’ […]