我目前有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) 我需要根据依赖元素重新排序数组.如果一个元素是一个数组(具有依赖性),那么该数组的第二个元素就是依赖项,并且需要在该数组之前.然后删除所有依赖关系信息,因为我们不再需要,并返回一个更正顺序的数组.
# 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) 我正在使用轮胎和弹性搜索.该服务已开始使用端口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和服务容器.服务开始很好.
现在,当我使用轮胎搜索时,如果结果出现我没有收到任何结果,我没有收到任何错误消息.
有没有人知道如何找出问题所在,更不用说修复它了?
我有这个数组:
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个元素并将它们放在一个数组中.实现这一目标的最简单方法是什么?
我在自定义默认的 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)
..会解决我的问题。
我有一个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.没有一个如何通过名称选择的例子.
hash = {:symbol, 'mental'}
Run Code Online (Sandbox Code Playgroud)
因为我发现以上点缀了我正在研究的项目,我无法弄清楚这是否是由于旧版本的Ruby而不是.
任何人都有Symfony2的任何性能提示,如"使用_","禁用_ "等?像缓存这样的东西,但不太明显的事情,如使用Doctrine2查询缓存.
我在本地运行我的登台服务器使用:
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) 我有这个:
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呢?
如何将方法的结果传递给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 ×4
apache2 ×1
arrays ×1
chain ×1
coffeescript ×1
doctrine-orm ×1
jquery ×1
kaminari ×1
methods ×1
php ×1
simple-form ×1
symfony ×1