我正在使用ajax获取数据,结果可以是结果数组,也可以是"找不到结果"的字符串语句.我怎么知道我是否有任何结果?我试过这种方法:
if result == String
do something
Run Code Online (Sandbox Code Playgroud)
但它不起作用,就像
if typeof(result) == "string"
do something
Run Code Online (Sandbox Code Playgroud)
还有其他功能可以帮助我获取变量的类型吗?或者也许我可以测试它的数组类型,它也会非常有帮助
据我了解'发送'方法,这个
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'方法有什么意义呢?
在我的项目中,我有相当常见的命名空间"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在命名空间中看到这些策略?
我想要两个按钮,一个用于淡出div1,另一个用于淡入div1,或者淡出按钮本身,如果div1已经隐藏了.这里是代码,虽然非常不必要,导致我的主要问题是"if"语句......
$('#b > button').click(function(){
$('#div1').fadeOut(400)
});
$('#div2 > button').click(function(){
$('#div1').fadeIn(400)
});
Run Code Online (Sandbox Code Playgroud) 在 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
删除后会出现无限循环?谢谢!
在标题中,我在安装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,并给我错误.:(
我的问题很简单,这个帖子的标题我有两个类
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) 我需要在用户登录后控制重定向。我发现这个问题的许多答案都指向 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) 开发我的Symfony2应用程序,我想像Ruby on Rails一样,在所有控制器中都有可用的方法.在RoR控制器中简单地继承之后ApplicationController,这就是你放置所有方法的地方.但Symfony的方式是什么,这里有什么好的做法?
我想要的功能实际上非常简单,类似于:
public function showAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
}
Run Code Online (Sandbox Code Playgroud)
我可以在这里加载当前用户,我希望在每个操作之前终止此函数,当然不会将代码复制到每个控制器中.
我正在尝试学习一些测试,并偶然发现了嘲弄和抄袭.我实际上认为我可以在这里得到不同点,我想不出任何理由我应该首先使用嘲弄.让我们看一下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,那该测试怎么样?它总是会,我们告诉它.这不是没有意义吗?