Tag: 方法

使用模型中的方法,从视图中调用它

我有一个属于用户的更新模型。 要显示一个用户的所有朋友的更新,我正在执行以下操作: Update.where(“user_id” => [array_of_friend_ids]) 我知道“正确”的做法是创建一个方法来创建上面的数组。 我开始编写方法,但它只是半工作。 目前我在我的用户模型中有这个: def self.findfriends(id) @friendarray = [] @registered_friends = Friend.where(“user_id” => id) @registered_friends.each do |x| @friendarray << x.friend_id end return @friendarray end 我在视图中执行整个操作: <% @friendarray < 然后我正在调用Update.where(“user_id”=> @friendarray)。 但显然我在这里以非常黑客的方式做事。 当Rails可以从视图中的模型和方法“看到”某些变量时,我有点困惑。 插入ID数组以查找更新的最佳方法是什么,因为我不应该在视图中使用太多逻辑?

如何在Rails 3中总结记录?

我有一个ItemsSold模型,它有一天销售的杂志,书籍,video,greeting_cards,笔的总数。 如何优雅地返回一个数组,其中包含最后一个任意周数的每个项目的每周销售总数? 我有一个模型文件: #items_sold.rb class ItemsSold < ActiveRecord::Base attr_accessible :magazines, :books, :videos, :greeting_cards, :pens, :sold_date end 我的表定义如下: t.integer :magazines t.integer :books t.integer :videos t.integer :greeting_cards t.integer :pens t.datetime :sold_date 此外,是否有可能返回去年的月度总数?

未定义的方法`collect’代表nil:NilClass

有人可以帮我解决这个错误吗? post中的NoMethodError #create 显示C:/Users/User/Documents/website/app/views/posts/_form.html.erb,其中第24行引发: 未定义的方法`collect’代表nil:NilClass 提取的来源(第24行): 23: 24: 模板包含的跟踪:app / views / posts / new.html.erb 我的_form.html.erb { :multipart => true }) do |f| %> prohibited this post from being saved: 我的控制器: class PostsController < ApplicationController # GET /posts # GET /posts.json def index @posts = Post.all respond_to do |format| format.html # index.html.erb format.json { render […]

如何测试作为helper_method公开的Rails控制器方法?

它们似乎无法从ActionView :: TestCase访问

为什么在保存对象后使用’reload’方法? (Hartl Rails Tut 6.30)

我正在为Hartl的Rails 4教程第6章练习。 第一个练习测试以确保用户电子邮件地址正确缩小: require ‘spec_helper’ describe User do . . . describe “email address with mixed case” do let(:mixed_case_email) { “Foo@ExAMPle.CoM” } it “should be saved as all lower-case” do @user.email = mixed_case_email @user.save expect(@user.reload.email).to eq mixed_case_email.downcase end end . . . end 我不明白为什么这里需要’重载’方法。 一旦@user.email设置为@user.email的内容并保存 ,是不是@user.reload.email和@user.email同样的事情? 我把重装方法拿出去尝试它,它似乎没有改变任何测试。 我在这里想念的是什么?

如何在Rails中为多个模型提供相同的方法?

对于一个名为Email.rb的模型,我有一个名为new_todos的方法。 需要为Call.rb,Postalcard.rb等提供相同的方法。 而不是在多个Active Records模型中剪切和粘贴这个精确的片段,我怎样才能将它编写一次并将其提供给适当的模型? 我怀疑它可以通过在/ lib文件夹中放置一个模块来工作,但我不确定….谢谢! def new_todos Contact.campaign_id_is(self.campaign_id).each do |contact| todo = Todo.new todo.contact_id = contact.id todo.user_id = contact.user_id todo.asset = self.class.name todo.asset_id = self.id todo.original_date = contact.date_entered + self.days.days todo.current_date = todo.original_date todo.save end end

Rails 3如何使用link_to更改d​​b中布尔值的值?

我正在尝试创建一个简单的链接,允许管理员批准我的网站上的用户 与这个家伙的尝试非常相似: 在Rails 3中如何使用button_to来改变布尔值? 这是它应该如何工作: 管理员单击链接以批准用户 该链接调用UsersController中的activate函数 活动函数调用用户建模 用户模型将已批准的属性更新为true并保存 这就是我要做的事情 在我的用户#index视图中 “index”, :method => ‘activate’, :id => user.id, :class => ‘btn btn-mini btn-danger’ %> 在我的userController中 def activate @user = User.find(params[:user]) @user.activate_user end 在我的用户模型中 def activate_user self.approved = ‘true’ self.save end 和我的路线 devise_for :users, :controllers => { :registrations => “registrations” } resources :users do member do […]

如何从主应用程序访问Rails引擎方法?

我正在尝试使用Spree :: Core引擎中定义的current_order方法: https : //github.com/spree/spree/blob/master/core/lib/spree/core/current_order.rb 在我看来,我已经尝试过了 Spree::Core::CurrentOrder.current_order 在开发中仅使用“current_order”工作正常,但不在生产中。 那么我试图在我的视图文件中要求它像这样: require ‘spree/core/current_order’ 我也尝试过这些其他解决方案的排列: 如何在主应用程序中合并Rails引擎ApplicationController方法? 一种从引擎到应用程序添加before_filter的方法 Rails 3.1:在客户端应用程序中公开引擎助手的更好方法 但我已经忘记了我实际做了什么。 有人可以指出我正确的方向吗? 也许我错误地在上面的链接中实现了解决方案? 这是我在制作中遇到的错误: 2012-06-21T09:59:08 + 00:00 app [web.1]:ActionView :: Template :: Error(Spree :: Core :: CurrentOrder:Module的未定义方法`current_order’): 如果我用current_order注释掉代码行,那么一切都在生产中。 我认为这是生产中装载的方式吗? 但这是我第一次尝试部署,所以我不太了解开发和生产之间的差异。 提前致谢!

Ruby on Rails:params是零。 未定义的方法`’为nil:NilClass

我试图访问我所做的搜索页面时收到错误。 问题似乎是我试图在没有任何空白时删除空白。 我的搜索function有效,但是当technols为零时我无法处理这个案例。 这是我的错误: NoMethodError in ProjectsController#search undefined method `[]’ for nil:NilClass 在我的项目控制器中,第26行: tech_ids = params[“technols”][“id”].reject(&:blank?). 这是我的搜索操作: def search tech_ids = params[“technols”][“id”].reject(&:blank?) @search = params[:client], params[:industry], params[:role], tech_ids, params[:business_div], params[:project_owner], params[:status], params[:start_date_dd], params[:start_date_A], params[:start_date_B], params[:keywords] @project_search = Project.search(*@search).order(sort_column + ‘ ‘ + sort_direction).paginated_for_index(per_page, page) @search_performed = !@search.reject! { |c| c.blank? }.empty? @project = Project.new(params[:project]) @all_technols […]

公共活动上的未定义方法`destroy’

用户可以在屏幕上发表评论,并由PublicActivity跟踪: @comment.create_activity :create, owner: current_user, recipient: @comment.screen.user 并且评论依赖于::在屏幕模型上销毁。 但是当我删除屏幕时,删除评论时,该评论的PublicActivity记录仍然存在。 这是我的Screens Controller : def destroy @activity = PublicActivity::Activity.find_by_trackable_id(params[:id]) @activity.destroy #<– Heres the Problem @screen.destroy respond_to do |format| format.html { redirect_to root_path } format.json { head :no_content } end end 但是在删除屏幕时,我得到了undefined method destroy’for nil:NilClass`。 我在Railscast上读到: 它是由于在对象被销毁后调用create_activity方法。 根据gem维护者的说法,你只需假设记录将被销毁,并在销毁之前调用create_activity 我错过了什么? 以下信息 screen.rb belongs_to :user has_many :comments, :dependent => :destroy […]