小编Dam*_*che的帖子

在rails控制台中创建关联模型?

我目前有2个型号设置:

class Topic < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :topics
end
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试使用rails控制台中关联的类别创建主题:

t = Topic.new :name => "Test", :category => Category.find(1)
Run Code Online (Sandbox Code Playgroud)

麻烦的是模型有category_id,所以我需要使用:

c = Category.find(1)
t = Topic.new :name => "Test", :category_id => c.id
Run Code Online (Sandbox Code Playgroud)

但是,我已经多次看到了使用:category而不是:category_id并传入类别对象而不是对象id的能力.我哪里错了?

当我做:

c = Category.find(1)
t = Topic.new :name => "Test", :category => c
Run Code Online (Sandbox Code Playgroud)

我收到:

ActiveRecord::UnknownAttributeError: unknown attribute: category
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

严重依赖Ruby数组重新排序

我需要根据依赖元素重新排序数组.如果一个元素是一个数组(具有依赖性),那么该数组的第二个元素就是依赖项,并且需要在该数组之前.然后删除所有依赖关系信息,因为我们不再需要,并返回一个更正顺序的数组.

# array1 = [['a'], ['b','c'], ['c','a']]
# ordered = ['a', 'c', 'b']
# logic: c comes before b, a comes before c
Run Code Online (Sandbox Code Playgroud)

以下是我认为过度设计的方法:

array1.each_with_index do |ar, i|
  # ignore elements without dependencies
  if ar.count > 1
    # get dependency
    dep = ar[1]

    # get index for element where this dependency is first
    dep_index = array1.index { |a| a.first == dep }

    # remove found dependency and store
    dep_element = array1.delete_at(dep_index)

    # insert found dependency to before current element
    array1.insert(i, …
Run Code Online (Sandbox Code Playgroud)

ruby arrays

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

调试elasticsearch

我正在使用轮胎和弹性搜索.该服务已开始使用端口9200.但是,它返回了2个错误:

"org.elasticsearch.search.SearchParseException: [countries][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query":{"query_string":{"query":"name:"}}}]]"
Run Code Online (Sandbox Code Playgroud)

"Caused by: org.apache.lucene.queryParser.ParseException: Cannot parse 'name:': Encountered "<EOF>" at line 1, column 5."
Run Code Online (Sandbox Code Playgroud)

所以,我重新安装了elasticsearch和服务容器.服务开始很好.

现在,当我使用轮胎搜索时,如果结果出现我没有收到任何结果,我没有收到任何错误消息.

有没有人知道如何找出问题所在,更不用说修复它了?

elasticsearch

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

根据值获取关联数组的元素

我有这个数组:

Array ( 'jan' => 2, 'feb' => 1, 'mar' => 2, 'apr' => 1 )
Run Code Online (Sandbox Code Playgroud)

..我想回来:

Array ('jan', 'mar')
Run Code Online (Sandbox Code Playgroud)

在中,找到具有最高计数的2个元素并将它们放在一个数组中.实现这一目标的最简单方法是什么?

php

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

自定义kaminari分页模板

我在自定义默认的 kaminari 模板时遇到了困难。

我已经使用生成器创建了 kaminari 模板文件。在 kaminari/paginator.html.haml 中:

= paginator.render do
  %nav.pagination
Run Code Online (Sandbox Code Playgroud)

我想要做的就是访问其中的 actionview 帮助程序,例如 link_to 或 render。我搜索了源代码,但找不到传递给此渲染方法的帮助程序的任何倾斜。

本质上,能够做到这一点:

= paginator.render do
  %nav.pagination
    = render :partial => 'custom links'
    = link_to "custom link", custom_path
Run Code Online (Sandbox Code Playgroud)

..会解决我的问题。

ruby-on-rails-3 kaminari

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

选择simple_form:按名称

我有一个simple_form集合,其中包含一系列语言.我想默认选择"德语",但simple_form中的selected:选项需要一个id.我可以获得'德国'的id,但希望没有必要.

= f.association :language, selected: // not sure what to put here
Run Code Online (Sandbox Code Playgroud)

这有效,但很臭(我不会使用这种恶劣的代码):

= f.association :language, selected: Language.where("name = 'German'").first.id
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

= f.association :language, selected: { |lan| lan.name == 'German' }
Run Code Online (Sandbox Code Playgroud)

我在过去一小时内发现的每个例子都涉及id.没有一个如何通过名称选择的例子.

ruby-on-rails-3 simple-form

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

这是有效的ruby语法吗?

hash = {:symbol, 'mental'}
Run Code Online (Sandbox Code Playgroud)

因为我发现以上点缀了我正在研究的项目,我无法弄清楚这是否是由于旧版本的Ruby而不是.

ruby

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

Symfony2性能调整?

任何人都有Symfony2的任何性能提示,如"使用_","禁用_ "等?像缓存这样的东西,但不太明显的事情,如使用Doctrine2查询缓存.

symfony doctrine-orm

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

在本地运行Rails 3暂存环境(所有资产上404)

我在本地运行我的登台服务器使用:

RAILS_ENV=staging rails console -p 1337
Run Code Online (Sandbox Code Playgroud)

我有预编译资产,一切正常,但我无法找到如何提供这些资产.我在staging.rb中有这个:

config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)

在我的apache vhost中,如果我在80上听,我可以访问我的资产:

http://domain.local/assets/application.css
Run Code Online (Sandbox Code Playgroud)

但是,如果我在1337上听,与我的rails服务器相同的端口,那么rails会吐出404.我的困惑是,我已经告诉rails不要发送给serve_static_assets,那么为什么要尝试为它们服务呢?

http://domain.local:1337/assets/application.css
Run Code Online (Sandbox Code Playgroud)

我肯定错过了什么.该网站显示正常,只返回所有资产404:

ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):
Run Code Online (Sandbox Code Playgroud)

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

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

如何从$ .getJSON(coffeescript)返回json

可能重复:
无法从jQuery Ajax调用中获取正确的返回值
如何从函数中返回AJAX调用的响应?

我有这个:

  get_json = (url) ->
    $.getJSON "#{url}.json", {}, (json, response) ->
      return json
Run Code Online (Sandbox Code Playgroud)

但这编译为:

getJson = function(url) {
  return $.getJSON("" + url + ".json", {}, function(json, response) {
    return json;
  });
};
Run Code Online (Sandbox Code Playgroud)

..并返回响应对象.我怎样才能返回json呢?

jquery coffeescript

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

如何将ruby中的方法链接传递给一个方法的输出到连续方法

如何将方法的结果传递给ruby中的另一个方法?例如:

class D
  def initialize(text)
    @text = text
  end

  def a s
    "hello #{s}"    
  end

  def b s
    "hi #{s}"
  end
end
Run Code Online (Sandbox Code Playgroud)

所以,我想要做的是将方法a的输出传递给方法b.所以基本上(如果方法不在类中)我可以执行以下操作:

puts b(a "Tom") #=>hi hello Tom
Run Code Online (Sandbox Code Playgroud)

但是,即使这不在一个类中,如果有很多方法也不会很好看,所以必须有更优雅的方法来做到这一点.那么hi hello Tom通过将方法a和b应用于类D的实例来获得输出的正确方法是什么?

更新我只是想让它更清晰一些.例如,在F#中,您可以执行以下操作:

let a s = "hello " + s
let b s = "hi " + s
"Tom" |> a |> b #=> hello hi Tom
Run Code Online (Sandbox Code Playgroud)

这里我们定义了函数a和b,然后将结果传递给下一个函数.我知道它是一种功能性语言,所以做事的方式会有所不同.但我只是想知道Ruby中是否有这样的技巧?

ruby methods chain

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