我有一个带有手机/手机号码和家庭电话号码的表格.
如果电话号码留空,我想只验证手机/手机号码的存在,反之亦然.
我目前对这些字段的验证如下.
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.
是否可以在Rails中循环对象的属性?我有一个对象而不是编码视图中的每个属性,我想在视图中输出每个属性,因为有很多.
我有一个名为的对象@work_profile
,它有许多属性,主要是布尔复选框值.
编辑:我看到我可以使用@work_profile.attributes
.任何帮助将哈希格式化为更加用户友好的东西都会很棒.
我有一个交易表,需要查找日期与今天的日期相符的记录.
在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) 我有一个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) 我正在与另一个开发人员合作开发一个项目,并且在尝试启动本地服务器时遇到错误.缺少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) 我有一个表单,当我在编辑操作期间提交时,将 .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) 我的申请有订单的交易.在我的管理区域,我希望能够手动处理订单.
在我的访问/交易视图中
<%= 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) 我已经安装了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设置环境变量的文档
我对使用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)