我使用的是ts版本2.0.5,rails 3.0.9和mysql2 0.2.11
当尝试使用rake ts:index创建索引时,出现以下错误:
ERROR: source 'technical_core_0': unknown type 'mysql'; skipping.
Run Code Online (Sandbox Code Playgroud)
我的development.sphinx.conf包含:
source technical_core_0
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = ps_development
sql_sock = /tmp/mysql.sock
sql_query_pre = SET NAMES utf8
sql_query_pre = SET TIME_ZONE = '+0:00'
sql_query = SELECT SQL_NO_CACHE `technicals`.`id` * CAST(1 AS SIGNED) + 0 AS `id` , `orders`.`name` AS `author`, `technicals`.`id` AS `sphinx_internal_id`, 0 AS `sphinx_deleted`, 488243725 AS `class_crc`, IFNULL(`orders`.`name`, '') AS `author_sort`, `technicals`.`order_id` AS `order_id`, UNIX_TIMESTAMP(`technicals`.`created_at`) AS `created_at`, …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的Go网络服务器.它的工作是接收入站json有效负载.然后,它将有效负载发布到一个或多个期望字节数组的服务.无需检查有效负载.刚发过来.
在这种情况下,它会收到一个入站作业并将其发送到Google PubSub.它可能是另一项服务 - 它并不重要.我试图找到最有效的方法将对象转换为字节数组而不首先解码它.
为什么?在一台服务器上解码并转换为JSON似乎有点浪费,只是稍后解组它.另外,我不想在两个包中维护两个相同的结构.
如何将io.ReadCloser转换为字节数组,因此我只需要解组一次.我尝试过类似这样的答案,但不认为这是最有效的方式:
我的http服务器代码如下所示:
func Collect(d DbManager) http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
code := 422
obj := Report{}
response := Response{}
response.Message = "Invalid request"
decoder := json.NewDecoder(r.Body)
decoder.Decode(&obj)
if obj.Device.MachineType != "" {
msg,_ := json.Marshal(obj)
if d.Publish(msg, *Topic) {
code = 200
}
response.Message = "Ok"
}
a, _ := json.Marshal(response)
w.WriteHeader(code)
w.Write(a)
return
})
}
Run Code Online (Sandbox Code Playgroud) 我必须连接到我们的freeradius服务器使用的现有数据库.一个表有一个名为属性的列,我试图访问.
访问时,我收到他的错误:
ActiveRecord::DangerousAttributeError
attribute? is defined by ActiveRecord
Run Code Online (Sandbox Code Playgroud)
我试图在我的模型中选择并重命名此列:
def self.default_scope
Radcheck.select("attribute as newattribute")
end
Run Code Online (Sandbox Code Playgroud)
但那也没有用.
任何人都可以推荐一种方法吗?我真的想在rails中重命名列!
我有两个非附加模型 - 里程碑和用户.(我的里程碑实际上属于公司,公司有许多里程碑.)
每个里程碑都有一个负责它的用户 - 以我的里程碑形式,我使用以下内容来查找和选择用户:
<%= f.input :milestone_user, :as => :select, :collection => User.find(:all, :order => "name ASC") %>
Run Code Online (Sandbox Code Playgroud)
这给了我一个user_id,我在一个视图中将其转换为名称,如下所示:
<%= User.find(milestone.milestone_user).name %>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我现在想在几个视图中使用它,不喜欢在我的视图中查询.
我试图将其移动到我的用户模型中,但我不知道如何去做.我在模型中试过这个:
scope :username, lambda { where("id = milestone_user")}
Run Code Online (Sandbox Code Playgroud)
这在我看来:
<%= User.username.first_name %>
Run Code Online (Sandbox Code Playgroud)
但它抱怨first_name的未定义方法..
提前致谢
这可能是一个非常简单的修复,但我还没有找到答案.
我的申请有订单和任务.订单有很多任务.当用户在show order视图中单击新任务时,它会传递order.id:
<%= link_to "New Task", new_task_path(:order_id=> @order.id) %>
Run Code Online (Sandbox Code Playgroud)
网址显示:
/tasks/new?order_id=1
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何提取这个并在我的表单中使用它?我试过了:
<%= f.text_field :order_id, :value => @order_id %>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我正在尝试显示特定订单的里程碑列表.(订单有许多里程碑.)
在我的订单模型中,我有这个:
scope :open, lambda {
joins("join milestones on milestones.order_id = orders.id").
where("order_id = ? AND milestone_status = ?", :params[:order_id], true).
group("orders.id")
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是让当前的订单ID生效 - :params [:order_id]显然是错误的.
在我的路线中我有这个:
resources :orders do
resources :milestones
end
Run Code Online (Sandbox Code Playgroud)
我的网址如下:
http://127.0.0.1/orders/2/milestones
这怎么可能?我已通过手动替换订单ID来测试范围.
- 编辑 -
根据以下建议,我在里程碑控制器中添加了以下内容:
@orders = Order.open( params[:order_id] )
Run Code Online (Sandbox Code Playgroud)
在我看来,我有这个:
<%@ orders.each do | open | %>
但是我收到一个错误:
wrong number of arguments (1 for 0)
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪在这里:http://pastie.org/2442518
作为订购系统的一部分,我正在为我们公司构建一个简单的任务应用程序.
我有一系列具有许多规则的任务.没有什么复杂的...我坚持的是添加一个复选框来完成任务.我希望它从索引视图实时完成,而不必点击提交..
我真的不确定哪里看.我想我需要使用ajax来做到这一点 - 任何人都可以推荐一个教程或告诉我我应该寻找什么.
还考虑过一个插件,就像那里的编辑一样.
提前致谢
---编辑1 -
根据以下@ pcg79的建议,我已将以下内容添加到我的应用程序中,但我不明白我是如何实际更改状态的.
在我的索引视图中,我有这个:
<%= check_box_tag 'complete_task_1', '', false, { 'data-href' => tasks_path(@task) } %><
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到我的application.js中(添加了#以使其正确调用)
$('#complete_task_1').click(function() {
$.ajax({
url: $(this).data('href'),
type: 'PUT',
dataType: 'html',
success: function(data, textStatus, jqXHR) {
// Do something here like set a flash msg
}
});
});
Run Code Online (Sandbox Code Playgroud)
由于缺乏理解,我将此添加到我的任务控制器:
def completed
@task = Task.find(params[:id])
@task.status = true
end
Run Code Online (Sandbox Code Playgroud)
这似乎是合理的,但不知道如何在ajax中实际调用它?
在我的开发日志中,我可以看到它有点工作,但它说:
ActionController::RoutingError (No route matches "/tasks"):
Run Code Online (Sandbox Code Playgroud)
- 编辑2 -
根据以下@jdc的建议,我尝试将以下内容添加到routes.rb:
获取'tasks /:id/completed'=>'tasks#completed',:as =>:completed_task
但仍然得到RoutingError.
- 稍作更新 -
按照下面@ pcg79的优秀建议,我用以下内容更新了我的文件. …
我正在尝试找出使用控制台更新我的roles_users模型的命令.我正在使用cancan与设计,我正在尝试设置我的种子.rb.我想先测试一下.
我的用户有很多角色,反之亦然.一切正常,我的roles_users表已经填充.
我想弄清楚的是如何在控制台中更新用户.
我可以从我的开发日志中看到以下情况:
INSERT INTO "roles_users" ("role_id", "user_id") VALUES (3, 1)
Run Code Online (Sandbox Code Playgroud)
我怎样才能在控制台中做到这一点?
谢谢
我有一个金发碧眼的时刻,可能是大脑冻结.
在我的rails3应用程序中,我有用户和任务.我的用户有很多任务......
我有到期和逾期的任务如下:
@due = Task.find(:all, :conditions => ["dueddate >= ? AND AND status = ?", Date.today, false], :include => :taskcategories, :order => "dueddate asc")
Run Code Online (Sandbox Code Playgroud)
我想在我的任务视图中做的是列出具有适当任务的用户......
出于某种原因,我无法理解它.我试过这个,但它不起作用:
@task = Task.all
@user = User.find(:all, :conditions => ["@task.dueddate <= ? AND
@task.status = ?", Date.today + 7.days, false])
Run Code Online (Sandbox Code Playgroud)
我相信这很容易,任何人都可以帮助我!!?
有没有办法用rails3搜索功能中的select替换text_field_tag?
我目前的搜索表单:
<%= form_tag orders_path, :method => 'get', :id => "orders_search" do %>
<p><%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %></p>
Run Code Online (Sandbox Code Playgroud)
我想用下拉列表替换以限制/过滤我的客户结果.我试过这个:
<%= select :search, params[:search], ([["Pending"], ["Open"], ["Closed"]]) %>
Run Code Online (Sandbox Code Playgroud)
但是这会在日志中给出500错误和输出:
TypeError (expected Array (got String) for param `search'):
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<%= select :search, ([["Pending"], ["Open"], ["Closed]]) %>
Run Code Online (Sandbox Code Playgroud)
这会导致参数数量无效.
最好的方法是什么?