小编sam*_*207的帖子

Rails before_filter和动作识别

我想在我的控制器中编写一个before_filter来识别接下来要执行的操作.这是出于授权目的(这有点像role_requirement插件那样做..)

例如:如果用户键入此URL http://localhost:3000/users,则默认为用户/索引操作.在我的用户控制器中,我有一个前过滤器方法说'check_permission',我希望该方法将'index'作为动作.

ruby-on-rails before-filter

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

将自定义中间件添加到Rails 4

我有一个Rails 4示例项目(博客),我创建了一个名为'request_timer'的简单中间件 config/initializers/request_timer.rb

  #config/initializers/request_timer.rb
  class RequestTimer                                                                                                                                         

    def initialize(app)                                                                                                                                      
     @app = app                                                                                                                                              
    end                                                                                                                                                      

    def call(env)                                                                                                                                            
      start_time = Time.now                                                                                                                                  
      status, headers, response = @app.call(env)                                                                                                             
      stop_time = Time.now                                                                                                                                   
      [status, headers, response.body]                                                                                                                       
    end                                                                                                                                                      

  end 
Run Code Online (Sandbox Code Playgroud)

config/application.rb以两种方式添加了我的中间件

1)添加为常量

#config/application.rb
module Blog                                                                                                                                                  
  class Application < Rails::Application                                                                                                                     
    config.middleware.use RequestTimer                                                                                                                       
  end                                                                                                                                                        
end
Run Code Online (Sandbox Code Playgroud)

这样当我尝试运行我的rails应用程序时,我收到了错误

/Users/sameera/workspace/ruby-rack/blog/config/application.rb:9:in `require': cannot load such file -- request_timer (LoadError)
    from /Users/sameera/workspace/ruby-rack/blog/config/application.rb:9:in `<top (required)>'
    from /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.2/lib/rails/commands.rb:74:in `require'
    from /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.2/lib/rails/commands.rb:74:in `block in <top (required)>'
    from /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.2/lib/rails/commands.rb:71:in `tap'
    from /Users/sameera/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.2/lib/rails/commands.rb:71:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in …
Run Code Online (Sandbox Code Playgroud)

rack rack-middleware ruby-on-rails-4

11
推荐指数
2
解决办法
1万
查看次数

Angular配置中的多个函数

我正在研究我的第一个Angular项目,目前仍在坚持(再次).

我的问题是我有两个需要在Angular配置中实现的功能.

我无法理解的是,两个模块都使用<angular module>.config,我不知道如何将这两个结合起来,因为当我阅读Angular文档时,它似乎得到了一个名称和一个函数.

以下是我目前的代码(这两个单独的工作)

var myApp = angular.module('myApp', ['ui.router'])
    .config(function($stateProvider, $urlRouterProvider){
        $urlRouterProvider.otherwise("/state1");
        $stateProvider
          .state('state1',{
            url: 'state1',
            templateUrl: "../pages/form.html"
          });
          $locationProvider.html5Mode(false);
    });



myApp = angular.module('myApp', ['facebook'])

    .config([
        'FacebookProvider',
        function(FacebookProvider) {
            var myAppId = '<FB app id>';
            FacebookProvider.init(myAppId);}

    ]
)
Run Code Online (Sandbox Code Playgroud)

如何将这两个功能合并为一个

var myApp = angular.module('myApp', ['facebook','ui.router']).config(
     facebook functon and ui-route function
 ) 
Run Code Online (Sandbox Code Playgroud)

我在这里发现了几乎相同的SO问题,但遗憾的是没有答案.

config angularjs

10
推荐指数
2
解决办法
1万
查看次数

离子滑动盒具有不同的滑动高度

我正在使用ion-slide-box,但问题是,我的ion-slides高度并不相同,所以它将所有的ion-slides 设置为高度的大小.以下是一个例子

  • 离子滑1高度30px
  • 离子滑动2高度100px

因此,ion-slide-box高度将为100px,这将在slide1中创建一个空白区域(70px).当用户使用该空白区域(70px)滑动时,slider不起作用.

slidebox为不同的幻灯片高度工作的方式/解决方法是什么?

javascript slide ionic-framework

10
推荐指数
2
解决办法
1万
查看次数

如何在YAML文件中使用变量?

我有YAML文件需要将变量作为输入:

outputters:
    - type        : DateFileOutputter
      name        : logfile
      level       : DEBUG
      date_pattern: '%Y%m%d'
      trunc       : 'false'
      dirname     : "/home/sameera/workspace/project/log"
      filename    : "message.log"
      formatter   :
        date_pattern: '%m/%d/%Y %H:%M:%S'
        pattern     : '%d %l - %m'
        type        : PatternFormatter
Run Code Online (Sandbox Code Playgroud)

我想传递dirname一个参数,如:

      dirname     : "<%= LOGFILE_PATH%>"
Run Code Online (Sandbox Code Playgroud)

LOGFILE_PATH在一个名为的文件中定义init.rb.

ruby yaml ruby-on-rails

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

动态获取变量值

我有以下课程

class User
  attr_accessor :name, :age, :address

  def initialize()
    self.name = "new user"
    self.age = 19
    self.address = "address" 
  end  


end
Run Code Online (Sandbox Code Playgroud)

如果要有一个方法来获取属性的指定值,我想要什么.意思是,我有另一种方法来获取上面类中的所有方法名称

methods = self.public_methods(all = false)
Run Code Online (Sandbox Code Playgroud)

我可以从中获取方法名称(我的意思是名称的getter等).我想要一种方法来传递该方法名称(我将它作为字符串)并获取方法的返回值

例如:

当我传递'name'作为方法名称时,我应该能够获得'新用户'作为值

希望我提前明白我的问题

**请注意,我必须使用这种方式,因为我的类有很多属性,并且它有很多继承的类.因此,不可能单独访问每个attr:D

ruby methods metaprogramming class

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

为rails应用程序创建Rdoc

我想为rails(2.3.8)项目生成一个文档.当我尝试

rake doc:rails
rake doc:rerails
Run Code Online (Sandbox Code Playgroud)

它为所有类创建文档,包括标准ruby类和供应商目录中的所有ruby文件(插件等).

如何仅为ruby类,以下目录中的文件创建rdoc文档

  1. app文件夹(所有模型,控制器和视图)
  2. 配置文件夹
  3. lib文件夹

ruby-on-rails rdoc

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

在Rails3中使用多个范围参数

在我的Rails3应用程序中,我有AR范围,需要3个参数

例如:我正在尝试在两个代码值之间获取给定模块的错误详细信息

#select * from error_codes where error_module_id=1 and code >0 and code < 100

scope :latest_error_code, lambda{ |module_id, min, max|
    {:conditions => "error_module_id=#{module_id} and code >= #{min} and code <= #{max}"}
} 
Run Code Online (Sandbox Code Playgroud)

在我的控制台中我做

ErrorCode.latest_error_code(1,0,100)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行此操作时,我收到以下错误

multiple values for a block parameter (3 for 1)
Run Code Online (Sandbox Code Playgroud)

当我做一些护目镜时,似乎AR范围内部支持多个参数

1 - 是真的吗?(AR doent支持范围的多个参数)2 - 还有其他选择吗?3 - 我在这里做错了吗?

提前致谢

activerecord scope ruby-on-rails ruby-on-rails-3 rails-activerecord

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

在RSpec中获得"范围的不良价值"

这是我的代码:

#app/models/user.rb
class User < ActiveRecord::Base

  def display_name
    name.split(' ').try(:first)
  end
end

#spec/models/user_spec.rb
require 'rails_helper'

RSpec.describe User, :type => :model do
  let(:user) { FactoryGirl.create :user }

  it "should return the correct display name" do
    expect ( user.display_name ).to eql("Chuck")
  end
end

#spec/factories/users.rb
FactoryGirl.define do
  factory :user do
    provider "MyString"
    uid "MyString"
    name "Chuck Norris"
    oauth_token "MyString"
    oauth_expires_at "2014-07-24 07:31:36"
  end
end 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此规范时,我收到以下错误:

Failure/Error: expect ( user.display_name ).to eql("Chuck")
     ArgumentError:
       bad value for range
Run Code Online (Sandbox Code Playgroud)

它似乎to从rails 检查方法active support,但我认为 …

ruby rspec ruby-on-rails rspec3

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

AngularJS:将params从控制器传递到服务

我在上搞清楚如何从我的传递参数的麻烦angular controllerservice

#my controller  
'use strict';

angular.module('recipeapp')
  .controller('recipeCtrl', ['$scope', 'recipeService',
    function($scope, recipeService){
      $scope.recipeFormData={};
      $scope.recipeSave = function(){
        recipeService.saveRecipe();
      }


  }]);

#my service
'use strict';
angular.module('recipeapp').service('recipeService',['$http', function($http){

  this.saveRecipe = save;

  function save(callback){
     //calling external http api
  }

}]);
Run Code Online (Sandbox Code Playgroud)

我在这里尝试做的是,$scope.formData从我的表单和控制器获取应该传递给service,根据我的理解,我不能$scope在里面使用service所以我需要找到一种传递$scope.formData给服务的方式

在控制器中,强硬的想法会是,recipeService.saveRecipe($scope.formData);但我不确定如何从服务中收集,

当我改变服务this.saveRecipe(val) = save;它不起作用:(

任何帮助都会得到满足

angularjs angularjs-service angularjs-scope angularjs-controller

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