小编Leo*_*Leo的帖子

如何检查变量是否为String类型

我正在使用ajax获取数据,结果可以是结果数组,也可以是"找不到结果"的字符串语句.我怎么知道我是否有任何结果?我试过这种方法:

if result == String
    do something
Run Code Online (Sandbox Code Playgroud)

但它不起作用,就像

if typeof(result) == "string"
    do something
Run Code Online (Sandbox Code Playgroud)

还有其他功能可以帮助我获取变量的类型吗?或者也许我可以测试它的数组类型,它也会非常有帮助

coffeescript

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

使用"发送"而不是普通的方法调用有什么意义?

据我了解'发送'方法,这个

some_object.some_method("im an argument")
Run Code Online (Sandbox Code Playgroud)

与此相同

some_object.send :some_method, "im an argument"
Run Code Online (Sandbox Code Playgroud)

那么使用'send'方法有什么意义呢?

ruby methods send

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

将Pundit与命名空间一起使用

在我的项目中,我有相当常见的命名空间"admin".

namespace :admin do
    resources :users, except: :show
end
Run Code Online (Sandbox Code Playgroud)

我使用Pundit gem来设置适当的授权,但我发现在命名空间中使用控制器很困难.我的政策安排如下

-policies
    -admin
        user_policy.rb
    application_policy.rb
    admin_policy.rb
    awesome_policy.rb
Run Code Online (Sandbox Code Playgroud)

与控制器非常相似.

但是,当在控制器内部使用"授权"方法时我只得到一个错误,通知该应用程序"无法找到UserPolicy".我的UserPolicy看起来像这样:

class Admin::UserPolicy < AdminPolicy
end
Run Code Online (Sandbox Code Playgroud)

那么问题是什么,我应该怎样做才能使Pundit在命名空间中看到这些策略?

ruby-on-rails pundit

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

如何检测元素是否淡出

我想要两个按钮,一个用于淡出div1,另一个用于淡入div1,或者淡出按钮本身,如果div1已经隐藏了.这里是代码,虽然非常不必要,导致我的主要问题是"if"语句......

$('#b > button').click(function(){
    $('#div1').fadeOut(400)
});

$('#div2 > button').click(function(){
    $('#div1').fadeIn(400)
});
Run Code Online (Sandbox Code Playgroud)

jquery if-statement fadeout fadein

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

枚举器new和yield

在 ruby​​ 文档中我发现了这段代码:

fib = Enumerator.new do |y|
  a = b = 1
  loop do
    y << a
    a, b = b, a + b
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是我无法理解它的作用。一般来说,它计算斐波那契数,但我很难理解细节。什么是y (Enumerator::Yielder)?文档对此只字未提方法有什么作用<<?(我知道它的产量别名)。为什么y << a 删除后会出现无限循环?谢谢!

ruby

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

无法安装RedCloth

在标题中,我在安装gem RedCloth时遇到问题.我下载了RubyGems v1.8.24,并使用ubuntu 12.04,这是我的控制台日志:

kuba@kuba-P5Q-SE:~$ sudo gem install RedCloth
[sudo] password for kuba: 
Building native extensions.  This could take a while...
ERROR:  Error installing RedCloth:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load     such file -- mkmf (LoadError)
    from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from extconf.rb:1:in `<main>'


Gem files will remain installed in /usr/lib/ruby/gems/1.9.1/gems/RedCloth-4.2.9 for     inspection.
Results logged to /usr/lib/ruby/gems/1.9.1/gems/RedCloth-    4.2.9/ext/redcloth_scan/gem_make.out
Run Code Online (Sandbox Code Playgroud)

我试着调查这个最后给定的文件,但是当我寻找它时,它会打开chrome,并给我错误.:(

ruby gem redcloth

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

dependent :: destroy不起作用(has_many association)

我的问题很简单,这个帖子的标题我有两个类

class Category < ActiveRecord::Base

  has_many :subcategories, dependent: :destroy

  accepts_nested_attributes_for :subcategories

end

class Subcategory < ActiveRecord::Base
  belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)

但当我点击link_to "Delete", category_path(category), method: :delete请求的类别被摧毁,但所有子类别保持没有发生任何事情.

编辑

服务器日志:

Started DELETE "/categories/8" for 127.0.0.1 at 2013-10-29 01:38:01 +0100
Processing by CategoriesController#destroy as HTML
  Parameters: {"authenticity_token"=>"rOTo3ROv/QsQRMPyCljbMvrViKgihC1CowBdlHdq7O4=", "id"=>"8"}
  Category Load (0.3ms)  SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 8 LIMIT 1
  SQL (0.5ms)  DELETE FROM `categories` WHERE `categories`.`id` = 8
Redirected to http://localhost:3000/categories
Completed 302 Found in 3ms (ActiveRecord: 0.8ms)


Started GET "/categories" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

设计方法 after_sign_in_path_for 不起作用

我需要在用户登录后控制重定向。我发现这个问题的许多答案都指向 after_sign_in_path_for 方法。所以我将它添加到我的 application_controller.rb 中:

def after_sign_in_path_for(resource_or_scope)
    raise "SIGN IN TEST"
    dashboard_path
end
Run Code Online (Sandbox Code Playgroud)

看看这是如何工作的。但是每当我登录时,都不会引发异常,只是忽略了方法。我该怎么做才能让设计使用它?

根据要求编辑,routes.rb 的片段

devise_for :users, :controllers => {
    :sessions => "user/sessions",
    :registrations => "user/registrations",
    :passwords => 'user/passwords'
  }
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

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

Symfony2 - 所有控制器的方法

开发我的Symfony2应用程序,我想像Ruby on Rails一样,在所有控制器中都有可用的方法.在RoR控制器中简单地继承之后ApplicationController,这就是你放置所有方法的地方.但Symfony的方式是什么,这里有什么好的做法?

我想要的功能实际上非常简单,类似于:

public function showAction()
{
    $user = $this->container->get('security.context')->getToken()->getUser();
}
Run Code Online (Sandbox Code Playgroud)

我可以在这里加载当前用户,我希望在每个操作之前终止此函数,当然不会将代码复制到每个控制器中.

php symfony

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

为什么在测试时模拟数据?

我正在尝试学习一些测试,并偶然发现了嘲弄和抄袭.我实际上认为我可以在这里得到不同点,我想不出任何理由我应该首先使用嘲弄.让我们看一下Mocha gem文档中的示例代码:

require 'test/unit'
require 'mocha/test_unit'

class MiscExampleTest < Test::Unit::TestCase
   test "mocking_an_instance_method_on_a_real_object" do
      person = Person.new
      person.expects(:save).returns(true)
      assert person.save

   end
Run Code Online (Sandbox Code Playgroud)

我不明白这条线背后的原因:

person.expects(:save).returns(true)
Run Code Online (Sandbox Code Playgroud)

无论我是否使用它,输出完全相同:测试通过.我可以感觉它与告诉对象/类如何表现有关,但是如果我们首先告诉对象返回true然后检查它是否返回true,那该测试怎么样?它总是会,我们告诉它.这不是没有意义吗?

ruby unit-testing ruby-on-rails mocking

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