小编Rob*_*t B的帖子

仅当另一个字段为空时才验证字段的存在 - Rails

我有一个带有手机/手机号码和家庭电话号码的表格.

如果电话号码留空,我想只验证手机/手机号码的存在,反之亦然.

我目前对这些字段的验证如下.

validates_presence_of :mobile_number
validates_presence_of :home_phone

validates_length_of :home_phone, :minimum => 12, :maximum => 12
validates_length_of :mobile_number, :minimum => 10, :maximum => 10, :allow_blank => true

validates_format_of :home_phone, :with => /\A[0-9]{2}\s[0-9]{4}\s[0-9]{4}/, :message => "format should be 02 9999 9999"
Run Code Online (Sandbox Code Playgroud)

我以为我可以有类似下面这样的东西,但不知道如何完全这样做.

validates_presence_of :mobile_number, :unless => :home_phone.blank?
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.

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

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

循环遍历Ruby on Rails中的Object属性

是否可以在Rails中循环对象的属性?我有一个对象而不是编码视图中的每个属性,我想在视图中输出每个属性,因为有很多.

我有一个名为的对象@work_profile,它有许多属性,主要是布尔复选框值.

编辑:我看到我可以使用@work_profile.attributes.任何帮助将哈希格式化为更加用户友好的东西都会很棒.

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

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

使用与今天的日期匹配的日期时间查找记录 - Ruby on Rails

我有一个交易表,需要查找日期与今天的日期相符的记录.

在rails控制台中,我需要匹配的日期字段如下所示.我已经分配了一份记录来处理测试.

ruby-1.9.2-p0 > deal.start
=> Tue, 10 May 2011 00:00:00 UTC +00:00 
Run Code Online (Sandbox Code Playgroud)

如果我尝试找到与今天的开始日期相匹配的任何记录,那么我就是零

ruby-1.9.2-p0 > Deal.find_by_start(Date.today)
=> nil
Run Code Online (Sandbox Code Playgroud)

然后我认为我可以通过将Date.today转换为日期时间来匹配.

ruby-1.9.2-p0 > Date.today.to_datetime
=> Tue, 10 May 2011 00:00:00 +0000 
ruby-1.9.2-p0 > Deal.find_by_start(Date.today.to_datetime)
=> nil
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?我正在使用Rails 3.

编辑:我考虑将它们转换为一致的格式,但是在尝试使用find_by_start方法时不会

ruby-1.9.2-p0 > deal.start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
=> true 

ruby-1.9.2-p0 > Deal.find_by_start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
NoMethodError: undefined method `strftime' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

30
推荐指数
3
解决办法
3万
查看次数

PG ::错误:错误:将记录插入关联模型时,"created_at"列中的空值

我有一个Job模型和Category模型,我使用HABTM协会加入.

我在尝试分配给Categories_Jobs模型时遇到错误.

PG::Error: ERROR: null value in column "created_at" violates not-null constraint

j = Job.first
Job Load (0.7ms)  SELECT "jobs".* FROM "jobs" LIMIT 1
=> #<Job id: 7, user_id ...(removed rest of details for sake of clarity)

j.categories
Category Load (0.8ms)  SELECT "categories".* FROM "categories" INNER JOIN "categories_jobs" ON "categories"."id" = "categories_jobs"."category_id" WHERE "categories_jobs"."job_id" = 7
=> [] 

j.category_ids = [1]
Category Load (6.1ms)  SELECT "categories".* FROM "categories" WHERE "categories"."id" =   $1 LIMIT 1 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3

11
推荐指数
2
解决办法
5930
查看次数

Rails本地服务器错误:没有这样的文件database.yml

我正在与另一个开发人员合作开发一个项目,并且在尝试启动本地服务器时遇到错误.缺少database.yml.我只是使用sqlite而另一个开发人员正在使用mongrel,因此我没有database.yml文件.我没有使用Mongrel,因为我使用的是ruby 1.9.2并且他使用的是ruby 1.8.7.

有没有办法解决这个错误?

LIONIDAS:project robertb$ rails s
=> Booting WEBrick
=> Rails 3.0.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/Users/robertb/.rvm/gems/ruby-1.9.2-p0@rails/gems/railties-3.0.3/lib/rails/application/configuration.rb:88:in `read': No such file or directory - /Users/robertb/Sites/project/config/database.yml (Errno::ENOENT)
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

form_for 操作在编辑操作期间将 .id 附加到 URL - Rails 3

我有一个表单,当我在编辑操作期间提交时,将 .id 附加到不应该的 post 操作。表单在创建但不更新期间正常工作。

这是编辑期间的 URL 发布操作。

http://localhost:3000/members/1/profile.1

这是我的表格

<%= form_for([@member, @profile]) do |f| %>
<%= f.label :first_name %><br />
<%= f.text_field :first_name, {:class => "txt-field-short"} %><br /><br />
<%= f.label :last_name %><br />
<%= f.text_field :last_name, {:class => "txt-field-short"} %><br /><br />
<p><%= submit_tag "Create Profile" %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这是我参加这个协会的路线。

resources :members do
  resource :profile
  resources :orders
end
Run Code Online (Sandbox Code Playgroud)

这是我在配置文件控制器中的创建、编辑和更新操作

def create
 @member = current_member
 @profile = @member.build_profile(params[:profile])

 respond_to do |format|
  if @profile.save
    format.html { redirect_to(member_profile_path, :notice => …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

从视图中调用link_to中的Controller方法

我的申请有订单的交易.在我的管理区域,我希望能够手动处理订单.

在我的访问/交易视图中

<%= link_to "Process Orders", "Not sure what I put here?" %>
Run Code Online (Sandbox Code Playgroud)

在我的access/deals_controller中

def process_orders
   @deals = Deal.find(params[:id]
   @orders = @deals.orders.where("state" == ?, "pending")

   @orders.each do |order|
     #order processing code here
   end
end
Run Code Online (Sandbox Code Playgroud)

我应该如何构建我的link_to方法来调用admin/deals控制器中的process_orders方法?

我觉得有点像

<%= link_to "Process Orders", access_deal_path(deal) %>
Run Code Online (Sandbox Code Playgroud)

它给了我以下网址

 localhost:3000/access/deals/9
Run Code Online (Sandbox Code Playgroud)

我怎么得到这样的东西

localhost:3000/access/deals/9/process_orders
Run Code Online (Sandbox Code Playgroud)

如果这是一种更好的方法,我也愿意接受有关将processing_orders方法移动到模型或帮助器的建议.

我摘录了我的路线档案.

  resources :deals do
    resources :orders
  end

  namespace "access" do
    resources :deals, :podcasts, :pages, :messages
  end
Run Code Online (Sandbox Code Playgroud)

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

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

使用POW.cx设置本地环境变量

我已经安装了pow.cx,所以我可以设置本地环境变量.我已经创建了我的应用程序的符号链接,工作正常.

这是我的environment.rb文件

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Myapp::Application.initialize!

ENV['RECAPTCHA_PUBLIC_KEY']
ENV['RECAPTCHA_PRIVATE_KEY']
Run Code Online (Sandbox Code Playgroud)

我不确定的是我应该如何将我的环境变量添加到.powenv文件中.

我的.powenv文件.

RECAPTCHA_PRIVATE_KEY => 1234567890
RECAPTCHA_PUBLIC_KEY  => 0987654321
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这是否可以,因为它不起作用.

我已经尝试将导出添加到每行的前面,但是使用我的键值将文件添加到我的app目录.

以下是使用pow.cx设置环境变量的文档

http://pow.cx/manual.html#section_2.2

ruby-on-rails-3

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

使用map方法格式化JSON输出 - Rails 3

我对使用map方法缺乏了解.

使用没有映射的json输出

format.json  { render :json => @categories }
Run Code Online (Sandbox Code Playgroud)

给我以下输出

[{"created_at":"2012-10-20T01:16:35+11:00","id":1,"name":"bathroom renovations","updated_at":"2012-10-20T01:16:35+11:00"}]
Run Code Online (Sandbox Code Playgroud)

使用json与映射

format.json  { render :json => @categories.map(&:name) }
Run Code Online (Sandbox Code Playgroud)

给了我这个输出

["bathroom renovations"]
Run Code Online (Sandbox Code Playgroud)

如何让我的输出看起来像

[{"id":"1","name":"bathroom renovations"}]
Run Code Online (Sandbox Code Playgroud)

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

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

标签 统计

ruby-on-rails ×7

ruby-on-rails-3 ×6

json ×1

ruby ×1