使用Passenger,Capistrano,nginx和MySQL将我的rails 3.0.10应用程序部署到Ubuntu 10.04服务器时遇到了很多麻烦(而apache2则更麻烦).将rake降级到0.8.7之后它终于正常工作,但现在Sunspot/Solr在我的开发环境中不起作用.sunspot_solr服务器正在运行,我可以获取服务器的URL,并通过浏览器连接到它.该网址与sunspot.yml中的网址相同.我不知道我做了什么导致了这个问题.我之前遇到过与太阳黑子相同的问题(在降级rake之前).然后它突然又开始工作了.我不知道为什么......我试过两个版本的太阳黑子(1.2.1和1.3.0).两者都提前工作,但现在不再工作了.
这是我收到的错误消息:
SocketError (getaddrinfo: Name or service not known):
app/models/resource.rb:128:in `text_search'
app/controllers/search_controller.rb:21:in `index'
Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (161.6ms)
Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (168.9ms)
Run Code Online (Sandbox Code Playgroud)
控制器有点乱,所以我只包括相关部分:
@criterion = params[:criterion]
@sort_direction = params[:sort_direction]
if @criterion && @sort_direction
session["sort_search"] = @criterion + "|" + @sort_direction
elsif session["sort_search"]
@criterion = session["sort_search"].split("|")[0]
@sort_direction = session["sort_search"].split("|")[1]
else
@criterion = "updated_at"
@sort_direction = "desc"
end
@search = Resource.text_search(session[:search_params] || "", current_user, @criterion, @sort_direction)
@resources = @search.results
Run Code Online (Sandbox Code Playgroud)
我没有更改控制器中的任何内容,因为它正在工作.
我的gemfile:
source 'http://rubygems.org'
gem 'rake'
gem 'rails', '3.0.10' …Run Code Online (Sandbox Code Playgroud) 如果我有一个像3.75的浮点数,我怎么能把它分成整数3和浮点数0.75?
我是否必须将float转换为字符串,然后将字符串拆分为".",然后将这些部分转换为整数和浮动,或者是否有更优雅或"正确"的方法来执行此操作?
我用祖先制作一个目标树.我想使用json将该树的内容发送到浏览器.
我的控制器是这样的:
@goals = Goal.arrange
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @goals }
format.json { render :json => @goals}
end
Run Code Online (Sandbox Code Playgroud)
当我打开json文件时,我得到了这个输出:
{"#<Goal:0x7f8664332088>":{"#<Goal:0x7f86643313b8>":{"#<Goal:0x7f8664331048>":{"#<Goal:0x7f8664330c10>":{}},"#<Goal:0x7f8664330e68>":{}},"#<Goal:0x7f86643311b0>":{}},"#<Goal:0x7f8664331f70>":{},"#<Goal:0x7f8664331d18>":{},"#<Goal:0x7f8664331bd8>":{},"#<Goal:0x7f8664331a20>":{},"#<Goal:0x7f86643318e0>":{},"#<Goal:0x7f8664331750>":{},"#<Goal:0x7f8664331548>":{"#<Goal:0x7f8664330aa8>":{}}}
Run Code Online (Sandbox Code Playgroud)
如何在json文件中呈现Goal-objects的内容?
我试过这个:
@goals.map! {|goal| {:id => goal.id.to_s}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为@goals是一个有序的哈希.
我有一个下拉列表,其中填充了使用祖先的表中的数据.
我想在列表中排列数据,以便将条目与其兄弟姐妹以及父母一起分组.
此代码有效,但不排列条目:
<%= builder.select("id", Location.all.collect {|l| [ l.name_nb, l.id ] }, { :include_blank => true }) %>
我试过这一行:
<%= builder.select("id", Location.arrange.collect {|l| [ l.name_nb, l.id ] }, { :include_blank => true }) %>
然后我得到消息:未定义的方法`name_nb'为#
我究竟做错了什么?我该如何安排参赛作品?
如果可能,我如何从另一个js.erb文件运行它?
试图让事情干涸!
编辑:说明:我在search/index.js.erb中有一个js.erb例程.我想在location/index.js.erb中使用相同的例程.因此,我想知道是否可以部分包含js.erb代码,这样我就不必将例程从第一个index.js.erb文件复制到另一个.
我有这个代码,它接受一个字符串并将其拆分为一个数组:
nodes = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")
Run Code Online (Sandbox Code Playgroud)
当字符串中只有一个元素(没有逗号)时,变量"nodes"不会成为数组,而是常规变量.因此,当我尝试迭代"节点"中的每个元素时,如果原始字符串仅包含一个元素,则不会发生任何事情.如果它有几个元素,一切都OK.
$.each(nodes, function (id, node_id) {
if ($("#" + model_id + "-" + node_class + "-" + node_id + "-" + "chkbx").is(":checked")) {
counter ++
}
})
Run Code Online (Sandbox Code Playgroud)
我试图将"nodes"声明为一个数组,但是当我分配splitted字符串时,它们都是一样的.由于我使用"split"来赋值,我认为我不能使用"push"将值附加到数组中.
我想,我试图把方括号放在任何地方,就像这样:
[nodes] = $("#" + model_id + "-" + node_class + "--" + "title").data("nodes").split(",")
Run Code Online (Sandbox Code Playgroud)
......但这没有帮助.
有没有解决方案,除了检查"节点"是否是一个数组,然后编写不同的代码来处理这两个选项?