小编jay*_*del的帖子

Ruby发送vs __send__

我理解这个概念,some_instance.send但我想弄清楚为什么你可以这两种方式调用它.Ruby Koans暗示除了提供许多不同的方法来做同样的事情之外还有一些原因.以下是两个用法示例:

class Foo
  def bar?
    true
  end
end

foo = Foo.new
foo.send(:bar?)
foo.__send__(:bar?)
Run Code Online (Sandbox Code Playgroud)

有人对此有任何想法吗?

ruby syntax

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

Rails respond_with:它是如何工作的?

我一直在这里阅读respond_withRails 3中的方法有多酷.但我甚至无法在Rails API或搜索源中找到它的引用.任何人都可以向我解释它是如何工作的(你可以使用哪些选项等)或指向我实际实现的地方所以我可以自己仔细阅读代码?

ruby-on-rails ruby-on-rails-3

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

设计:为什么我的注销链接不起作用?

问题:简而言之,当我尝试向我的应用程序安装注销链接时,它无法正常工作.这里有我认为放在这里的背景(如果你想要别的什么,请戳我)......

我在haml视图中得到了这个:

= link_to("Logout", destroy_user_session_path, :method => :delete)
Run Code Online (Sandbox Code Playgroud)

它在视图中生成:

<a href="/users/sign_out" data-method="delete" rel="nofollow">Logout</a>
Run Code Online (Sandbox Code Playgroud)

我在我的config/initializers/devise.rb中验证了我的设置没有注释并且正确:

config.sign_out_via = :delete
Run Code Online (Sandbox Code Playgroud)

我验证了以下路线:

destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
Run Code Online (Sandbox Code Playgroud)

我的routes.rb中也有这点诡计,我怀疑这与我的问题有关:

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

最后一点是因为我想在自己的控制器中管理(编辑,创建和删除)用户.

我得到的错误信息如下:

ActiveRecord::RecordNotFound in UsersController#show

Couldn't find User with ID=sign_out
Rails.root: /home/jaydel/projects/mbsquared-projects/Wilson-Goldrick

app/controllers/users_controller.rb:16:in `show'
Run Code Online (Sandbox Code Playgroud)

在我的服务器日志中,我看到了这个请求:

Started GET "/users/sign_out" for 127.0.0.1 at 2011-08-04 13:08:51 -0500
  Processing by UsersController#show as HTML
  Parameters: {"id"=>"sign_out"}
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

ruby-on-rails devise

43
推荐指数
5
解决办法
4万
查看次数

dbeaver:如何导出连接配置?

我最近买了一台新的 macbook pro 用于工作,我正在从旧机器迁移很多设置。我希望有一种方法可以从我的旧机器中导出连接配置/属性,而不必经历重新创建每个的过程。

有谁知道如何做到这一点?我老机器上的dbeaver版本是6.0.3,我新机器上的版本是6.1.x

谢谢!

dbeaver

39
推荐指数
9
解决办法
5万
查看次数

@AttributeOverride是什么意思?

我现在正在(快速)使用EJB,当我离开时它发生了巨大的变化(到目前为止更好).然而,我遇到了一个我正在努力的概念,并希望更好地理解,因为它似乎在我们(我工作的地方,而不是我和我头脑中的所有声音)代码中使用了相当多的代码.

这是我在一本书中找到的例子.它是显示如何使用@EmbeddedId注释的示例的一部分:

@Entity
public class Employee implements java.io.Serializable
{
    @EmbeddedId
    @AttributeOverrides({
        @AttributeOverride(name="lastName", column=@Column(name="LAST_NAME"),
        @AttributeOverride(name="ssn", column=@Column(name="SSN"))
    })

    private EmbeddedEmployeePK pk;

    ...
}
Run Code Online (Sandbox Code Playgroud)

EmbeddedEmployeePK类是一个相当简单的@Embeddable类来定义对@Columns:lastNamessn.

哦,我从Rubinger&Burke的O'Reilly的Enterprise JavaBeans 3.1中提取了这个例子.

在此先感谢您提供给我的任何帮助.

java attributes overriding jpa

32
推荐指数
3
解决办法
4万
查看次数

Sinatra控制器参数方法在JSON post请求时变为空

我有一个Sinatra应用程序,在我的大多数控制器中,json进入并在params对象中自动拾取.但是,除非我使用before方法来拉取request.body参数将它们解析为JSON并将它们合并到params散列中,否则我的后期操作根本没有得到参数.

这是控制器,以及过滤方法:

before do
  if request.request_method == "POST"
    body_parameters = request.body.read
    params.merge!(JSON.parse(body_parameters))
  end
end


post '/locations/new' do
  content_type :json
  puts "params after post params method = #{params.inspect}"
  ... other code ...
end
Run Code Online (Sandbox Code Playgroud)

我看到的输出基本上是控制器动作中的参数实际上在那里正确.但是,如果我在通话前注释掉参数是空的.

之前的感觉就像一个黑客.无论怎样,我都希望这些参数进来......我必须在那里做错事但我不知道它是什么.

任何帮助将深深感激......

json sinatra

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

Rails ActiveRecord:动态构建查询

我正在尝试组合一系列可以使用ActiveRecord动态创建和执行复杂查询的类.我对整个做法感到非常满意:

MyModel.select("id, name, floober").join(:creator).where(:is_active => true)
Run Code Online (Sandbox Code Playgroud)

我正在努力的是使用这些东西建立一个查询,无法提前确定每种可能的方法(连接数,数量或where子句,限制,组等)的数量.我可能有2个连接,或者没有连接,具体取决于它的调用位置.

由于我如何得到这些东西的性质 - 连接列表,列列表,where子句列表等 - 我可以盲目地将它们链接在一起.我必须将列连接在一起,排列连接,链接where子句,所以我无法遍历各种列表.

我试图避免编写任何原始SQL.

我试过的一件事是将ruby语句作为一个字符串构建,然后在最后评估它,当我完成后,我感到很脏,就像我需要洗澡一样.我正在寻找的是一种缓存查询状态的方法,直到所有部分都已累积,然后执行它们.

我是否"走出Rails"?

提前致谢...

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

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

Ruby:对类定义的显式范围

免责声明:代码取自红宝石公案

这是对类中常量范围的讨论.这是几个类的定义:

class Animal
  LEGS = 4
  def legs_in_animal
    LEGS
  end
end

class MyAnimals
  LEGS = 2

  class Bird < Animal
    def legs_in_bird
      LEGS
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

此时MyAnimals::Bird.new.legs_in_bird在2中做结果我理解为什么 - 在继承heirarchy之前搜索常量的词法空间.

然后定义这个类:

class MyAnimals::Oyster < Animal
  def legs_in_oyster
    LEGS
  end
end
Run Code Online (Sandbox Code Playgroud)

该教程说,现在调用MyAnimals::Oyster.new.legs_in_oyster4的结果,我无法弄明白.在我看来,Oyster是MyAnimals中的嵌套类,因此我希望它的行为与Birds类在上面的行为相同.我遗漏了一些关于用明确的范围方法声明类Oyster的关键信息.

任何人都可以向我解释这个吗?我已经通过Google找到了数百个红宝石课程教程,但没有一个能解决这个问题.

先感谢您...

ruby class

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

Ruby:在文件中放置多个类是否可以接受?

这可能是一个深奥的问题,但我只想知道这个问题的最佳实践.

ruby ruby-on-rails

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

html模板标签和jquery

我有这种情况,我正在尝试<template>在我的html源代码中使用该标记:

<template id="some-id">
  <div id="content-container">
    <span>{{some_string}}</span>
  <div>
</template>
Run Code Online (Sandbox Code Playgroud)

这最终将模板放在文档中,但不认为它在DOM中.这意味着在支持模板标记的浏览器中找不到$("#content-container").如果我搜索:

$("#some-id")
Run Code Online (Sandbox Code Playgroud)

我得到了回报:

<template id=?"some-id">?
  #document-fragment
    <div id="content-container">
      <span>{{some_string}}</span>
    <div>
</template>?
Run Code Online (Sandbox Code Playgroud)

这些都不会让我感到惊讶.我需要知道的是克隆文档片段的内容并拥有一个新节点,然后我可以将其放在我想要的DOM中.

我已经找到了如何使用jQuery实现这一点的示例,但是围绕这些内容的大部分代码已经在使用jQuery,我需要知道如何使用jQuery来执行此操作.

我的第一个想法是获取html,然后使用它来创建一个新节点:

stuff = $("#some-id").html()
new_node = $(stuff)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

Error: Syntax error, unrecognized expression: <the html string>
Run Code Online (Sandbox Code Playgroud)

我不知道错误是否是由胡子语法引起的.我认为必须有一个jQuery解决方案来解决这个问题,但是当我用Google搜索时,我得到了jQuery模板的大量命中,这是不同的.

有没有人有想法,答案或指向网站/页面的指针,可以帮助我完成这项工作?我试图避免拼凑一些hackish.

编辑:我最终找到了这个解决方案(我还在测试它,以确保它是一个解决方案,但它看起来很有希望);

template = $("#some-id")
content = template.html()
new_div = $("<div></div>")
new_div.html(content)
Run Code Online (Sandbox Code Playgroud)

我最终得到了我以前不需要的div,但我可以忍受.但这种感觉很糟糕.有没有人有更好的方法呢?好处是它仍然可以在尚未完全适应模板标签行为的浏览器中运行.

谢谢!

html jquery templatetag html5-template

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