小编use*_*832的帖子

Ruby on Rails,包括带参数的模块

在包含ruby模块时有没有办法使用参数?我有一个模块Assetable,它包含在许多类中.我希望能够动态生成attr_accessor.

module Assetable
  extend ActiveSupport::Concern

  included do 
    (argument).times do |i| 
      attr_accessor "asset_#{i}".to_sym
      attr_accessible "asset_#{i}".to_sym
    end
  end
end 
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

11
推荐指数
4
解决办法
8036
查看次数

Rails.application.routes 列出所有路由并确定控制器

我正在尝试编写一个脚本,它可以列出所有可用的路由,并为每个路由查询控制器和操作名称(有点像 rake 路由)。

如果我运行,Rails.application.routes.routes我可以看到数据都在那里。我似乎无法访问它。

 @named_routes=
  {"root"=>
    #<ActionDispatch::Journey::Route:0x007fc2cb40a598
     @app=
      #<ActionDispatch::Routing::RouteSet::Dispatcher:0x007fc2cb40b448
       @controller_class_names=#<ThreadSafe::Cache:0x007fc2cb40b420 @backend={}, @default_proc=nil>,
       @defaults={:trailing_slash=>false, :controller=>"home", :action=>"show"},
       @glob_param=nil>,
     @constraints={:required_defaults=>[:trailing_slash, :controller, :action], :request_method=>/^GET$/},
     @decorated_ast=nil,
     @defaults={:trailing_slash=>false, :controller=>"home", :action=>"show"},
Run Code Online (Sandbox Code Playgroud)

我如何使用控制器名称访问隐藏在那里的哈希。

作为一个方面,有没有办法从中确定路径?

ruby ruby-on-rails

3
推荐指数
1
解决办法
2834
查看次数

Rspec如何存根在方法中创建的对象

我正在重构一个臃肿的控制器,为旋转木马提供多态模型.我正在尝试构建一个类方法来处理查找和返回可转载的项目.

在我的RSPEC测试中,我想要保留方法'is_something?' 在由于参数而被发现的场地上.

  def self.find_carouselable(params)
    .......
    elsif params[:venue_id].present?
      venue=Venue.friendly.find(params[:venue_id])
      if venue.is_something? 
        do this 
      else
        do that
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何存根由于输入数据而创建的对象 - 我不确定这是否称为存根或嘲弄?

  context "carouselable is a venue" do 
    before do 
      allow(the_venue).to receive(:is_something?).and_return(true)
    end

    it "returns the instance of the carouselable object" do 
      expect(CopperBoxCarouselItem.find_carouselable(venue_params)).to eq the_venue
    end
   end
Run Code Online (Sandbox Code Playgroud)

非常感谢

ruby rspec ruby-on-rails

2
推荐指数
2
解决办法
1947
查看次数

为什么我的方法未定义?

我试图从模型中调用视图中的方法但我得到此错误

undefined method `titles_by_timing' for #<Class:0x0000010668db28>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.我甚至无法从rails控制台调用该方法.

[6] pry(main)> DeliveryCost.titles_by_timing
NoMethodError: undefined method `titles_by_timing' for #<Class:0x00000106f397b8>
from /Users/user/.rvm/gems/ruby-2.1.0/gems/activerecord-4.0.4/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
Run Code Online (Sandbox Code Playgroud)

这是模型.

class DeliveryCost < ActiveRecord::Base

  before_destroy :survive_if_jobs

  has_many :job_delivery_costs
  has_many :jobs, through: :job_delivery_costs

  def titles_by_timing
    self.do stuff
  end

  private

  def survive_if_jobs
    jobs.empty?
  end

end
Run Code Online (Sandbox Code Playgroud)

我试图从中调用它的视图并不直接对应于模型或控制器,它称为"Job_delivery cost".

- jdc_array = (@job.job_delivery_costs.any? ? [@job.job_delivery_costs,@job_delivery_cost].flatten : [@job_delivery_cost])
            - jdc_array.each do |jdc|
              = simple_form_for [:admin, @job, jdc] do |f|
                - if jdc.new_record?
                  %tr
                    %td
                      = f.input :delivery_cost_id, collection: DeliveryCost.order(:timing), :label_method => :timing, :value_method => :id, …
Run Code Online (Sandbox Code Playgroud)

ruby forms ruby-on-rails rails-activerecord

1
推荐指数
1
解决办法
62
查看次数

标签 统计

ruby ×4

ruby-on-rails ×4

forms ×1

rails-activerecord ×1

rspec ×1