小编Ton*_*ony的帖子

是否可以只在部分中放置一个rails form元素?

我的应用程序有一个选择框供用户选择"场地".正如您所料,此选择框位于表单中.我还在页面的某个位置通过AJAX创建了一个新的场地.创建新场地后,我想更新场地选择框以反映这一点.

我的解决方案是将选择框放在部分中,并从控制器中的create动作渲染部分.

 <div id="venue_select" style="clear: both;">
    <%= render :partial => 'venue/venue_select_box' %>
 </div>
Run Code Online (Sandbox Code Playgroud)

部分看起来像这样:

<%= f.collection_select :venue_id, @user_venues, :id, :name, :prompt => 'Select a venue' %>
Run Code Online (Sandbox Code Playgroud)

其中f是表格参考:

<% form_for :shows do |f| %>
Run Code Online (Sandbox Code Playgroud)

问题是f在partial中未定义,所以我得到一个错误.一种解决方案是包含整个表单,但我觉得这不应该是必要的,因为我没有更新整个表单.关于如何解决这个问题的任何想法?

ruby forms renderpartial ruby-on-rails partials

6
推荐指数
2
解决办法
5473
查看次数

在Django中保存模型给了我"警告:字段'id'没有默认值"

我在Django中有一个非常基本的模型:

class Case(models.Model):
    name = models.CharField(max_length=255)
    created_at = models.DateTimeField(default=datetime.now)
    updated_at = models.DateTimeField(default=datetime.now)

    def save(self):
        if self.created_at == None:
             self.created_at = datetime.now()
        self.updated_at = datetime.now()
        super(Case, self).save()

    class Meta:
        db_table = u'cases'
Run Code Online (Sandbox Code Playgroud)

因为我没有指定PK,Django为我照顾了这个.我在我的数据库中看到了一个名为"id"的字段,标记为主键并自动增加.我觉得奇怪的是得到了警告,因为数据库和模型端的一切都很酷.错误是:

_mysql_exceptions.Warning

Warning: Field 'id' doesn't have a default value
Run Code Online (Sandbox Code Playgroud)

保存时我的工作是将id设置为0.它会终止警告并且无论如何都会正确设置id,因为MySQL处理它.

case = Case()
case.id = 0 #ugly workaround for - Warning: Field 'id' doesn't have a default value
case.name = request.POST[u'case[name]']
case.save()
Run Code Online (Sandbox Code Playgroud)

此解决方案的问题是:

  1. 它很丑
  2. 保存后无法访问新PK,这使得无法正确序列化

有谁知道如何解决这一问题?

我在跑:

Python 2.7.2
django.VERSION (1, 3, 1, 'final', 0)
mysql  Ver 14.14 …
Run Code Online (Sandbox Code Playgroud)

python mysql django

6
推荐指数
2
解决办法
9575
查看次数

如何在ruby中将小数转换为字符串值为美元和美分?

我在我的应用程序中存储了一个成本.成本未在数据库中格式化.例如:00.00保存为0,1.00保存为1,40.50保存为40.5

我需要从数据库中读取这些值并将它们转换为字符串以获得美元和美分.例如:0 - > cost_dollars ="00"&cost_cents ="00",1 - > cost_dollars ="01"&cost_cents ="00",40.5 - > cost_dollars ="40"&cost_cents ="50" .

有没有一种简单的方法在轨道上的红宝石中做到这一点?或者有人有代码执行此操作吗?

谢谢!

ruby formatting ruby-on-rails decimal

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

Sphinx返回糟糕的搜索结果

我正在使用Sphinx和Thinking Sphinx插件.我用以下代码索引了一个名为Venue的模型(和rake thinking_sphinx:index命令)

define_index do
    indexes :name
    indexes city
    indexes zip
end
Run Code Online (Sandbox Code Playgroud)

我使用以下代码在控制器中获取结果:

@venues = Venue.search params[:search]
Run Code Online (Sandbox Code Playgroud)

我将它们渲染为json.我遇到的问题是,当我点击此网址时:

http://localhost:3000/venue/list?search=Baltimo
Run Code Online (Sandbox Code Playgroud)

我一无所获.但是当我点击此网址时:

http://localhost:3000/venue/list?search=Baltimor
Run Code Online (Sandbox Code Playgroud)

我得到了位于巴尔的摩市的所有场地.出于某种原因,一个角色有所作为.从理论上讲,如果我只搜索一个角色,我应该在巴尔的摩获得所有场地 - 'b'

有谁知道这里发生了什么?

谢谢

ruby sphinx ruby-on-rails thinking-sphinx

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

如何在Ruby On Rails中迭代活动记录对象?

这个问题很简单,但我已经遇到过几次这个问题了.

假设你做的事情如下:

cars = Vehicle.find_by_num_wheels(4)

cars.each do |c|
  puts "#{c.inspect}"
end
Run Code Online (Sandbox Code Playgroud)

如果汽车是一个阵列,这可以正常工作,但如果数据库中只有一辆汽车则会失败.显然我可以做一些像"if!cars.length.nil?"的事情.或者在调用.each之前,如果cars对象是一个数组,请检查其他方式,但每次都有点烦人.

是否有类似.each的东西来处理这个检查?或者是否有一种简单的方法可以将查询结果强制为数组而不管大小?

iteration activerecord ruby-on-rails

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

如何在rails网站上监控ruby的流量?

我在rails应用程序上有一个ruby,很高兴看到我每小时获得多少次点击.是否有一些简单的免费软件可以做到这一点,还是我必须开发自定义解决方案?谢谢!

ruby-on-rails traffic-measurement

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

测试是否在Ruby on Rails单元测试中调用函数

我正在使用TestUnit,并想确定是否调用了一个函数.我在一个名为Person的类中有一个方法,我将其设置为'before_update':

def geocode_if_location_info_changed
    if location_info_changed?
      spawn do
        res = geocode
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

然后我有一个单元测试:

def test_geocode_if_location_info_changed
  p = create_test_person
  p.address = "11974 Thurloe Drive"
  p.city = "Baltimore"
  p.region = Region.find_by_name("Maryland")
  p.zip_code = "21093"
  lat1 = p.lat
  lng1 = p.lng

  # this should invoke the active record hook
  # after_update :geocode_if_location_info_changed
  p.save
  lat2 = p.lat
  lng2 = p.lng
  assert_not_nil lat2
  assert_not_nil lng2
  assert lat1 != lat2
  assert lng1 != lng2

  p.address = "4533 Falls Road"
  p.city = "Baltimore"
  p.region = Region.find_by_name("Maryland") …
Run Code Online (Sandbox Code Playgroud)

unit-testing ruby-on-rails

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

使用JQuery的AJAX POST请求不是urlencode'+'

我需要传递给请求的很多JSON数据:

$.ajax({
                type: "POST",
                url: "http://"+HOST+"/users/rankings",
                data: "friends="+JSON.stringify(friendsArr),
                success: function(response){
                    $("#rankings").html(response);
                }
            });
Run Code Online (Sandbox Code Playgroud)

friendsArr是JSON格式的对象数组.问题是某些对象的数据带有"+"且无法正确编码.它在服务器端作为"",数据搞砸了.我是否真的必须遍历所有数据并分别编码每个值?必须有一个更简单的方法.

jquery encoding json

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

belongs_to,自定义class_name不在Rails 3中生成正确的外键

我正在更新Rails 3的应用程序,我在创建自定义外键时遇到问题.我有这样的事情:

class Product < ActiveRecord::Base
  belongs_to :owner, :class_name => 'User'
...
end

class User < ActiveRecord::Base
  has_many :products
...
end

class ProductsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @products = current_user.products
  end
end
Run Code Online (Sandbox Code Playgroud)

风景:

<%- @products.each do |p| -%>
    <%= p.created_at %><br />
<%- end -%>
Run Code Online (Sandbox Code Playgroud)

我在Rails日志中收到此错误:

Mysql::Error: Unknown column 'products.user_id' in 'where clause': SELECT     `products`.* FROM       `products` WHERE     (`products`.user_id = 1)
Run Code Online (Sandbox Code Playgroud)

它应该看到belongs_to :owner并查找一个名为的外键owner_id.我甚至尝试显式设置外键,但这不起作用.我还检查了灯塔的可能Rails 3错误,但没有运气.

activerecord ruby-on-rails belongs-to

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

如何在iOS中以较低的压缩率重新创建UIImage?

我有代码以非常差的质量重新创建高质量的图像,但我对我看到的结果感到有点困惑.代码在这里:

NSData *compressedData = UIImageJPEGRepresentation(bigImage,0);
NSLog(@"compressedData length = %d", [compressedData length]);
self.currentImage = [UIImage imageWithData:compressedData];
NSData *dataAfterCompression = UIImageJPEGRepresentation(self.currentImage,1);
NSLog(@"dataAfterCompression length = %d", [dataAfterCompression length]);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

2012-01-02 02:47:05.615 MyApp[349:707] compressedData length = 32671
2012-01-02 02:47:06.143 MyApp[349:707] dataAfterCompression length = 251144
Run Code Online (Sandbox Code Playgroud)

为什么用如此大的图像创建具有低质量数据的新图像?

image-processing ios

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