小编Jen*_*unt的帖子

思考sphinx未知类型'mysql'; 跳绳

我使用的是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)

ruby thinking-sphinx ruby-on-rails-3

19
推荐指数
2
解决办法
7583
查看次数

将io.ReadCloser转换为字节数组的最有效方法

我有一个非常简单的Go网络服务器.它的工作是接收入站json有效负载.然后,它将有效负载发布到一个或多个期望字节数组的服务.无需检查有效负载.刚发过来.

在这种情况下,它会收到一个入站作业并将其发送到Google PubSub.它可能是另一项服务 - 它并不重要.我试图找到最有效的方法将对象转换为字节数组而不首先解码它.

为什么?在一台服务器上解码并转换为JSON似乎有点浪费,只是稍后解组它.另外,我不想在两个包中维护两个相同的结构.

如何将io.ReadCloser转换为字节数组,因此我只需要解组一次.我尝试过类似这样的答案,但不认为这是最有效的方式:

从io.Reader到Go中的字符串

我的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)

json go

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

的ActiveRecord :: DangerousAttributeError

我必须连接到我们的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中重命名列!

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

14
推荐指数
2
解决办法
7407
查看次数

将查询从视图移动到模型

我有两个非附加模型 - 里程碑和用户.(我的里程碑实际上属于公司,公司有许多里程碑.)

每个里程碑都有一个负责它的用户 - 以我的里程碑形式,我使用以下内容来查找和选择用户:

<%= 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的未定义方法..

提前致谢

ruby ruby-on-rails-3

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

Ruby on Rails在URL中传递参数

这可能是一个非常简单的修复,但我还没有找到答案.

我的申请有订单和任务.订单有很多任务.当用户在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)

但它不起作用.

routes ruby-on-rails

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

Rails3如何在命名范围内使用:params?

我正在尝试显示特定订单的里程碑列表.(订单有许多里程碑.)

在我的订单模型中,我有这个:

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

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

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

Rails3从索引视图更新布尔值复选框

作为订购系统的一部分,我正在为我们公司构建一个简单的任务应用程序.

我有一系列具有许多规则的任务.没有什么复杂的...我坚持的是添加一个复选框来完成任务.我希望它从索引视图实时完成,而不必点击提交..

我真的不确定哪里看.我想我需要使用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的优秀建议,我用以下内容更新了我的文件. …

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

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

Rails控制台帮助需要HABTM关系

我正在尝试找出使用控制台更新我的roles_users模型的命令.我正在使用cancan与设计,我正在尝试设置我的种子.rb.我想先测试一下.

我的用户有很多角色,反之亦然.一切正常,我的roles_users表已经填充.

我想弄清楚的是如何在控制台中更新用户.

我可以从我的开发日志中看到以下情况:

INSERT INTO "roles_users" ("role_id", "user_id") VALUES (3, 1)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在控制台中做到这一点?

谢谢

ruby ruby-on-rails devise cancan

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

查找子句中使用关联模型的活动记录查询

我有一个金发碧眼的时刻,可能是大脑冻结.

在我的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)

我相信这很容易,任何人都可以帮助我!!?

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

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

Rails3用选择下拉列表替换搜索框

有没有办法用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)

这会导致参数数量无效.

最好的方法是什么?

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

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