Tag: ruby on rails 3

Rails3路由问题:未定义的方法`资源’

我已经安装了Rails 3.0.3版,现在我的routes.rb文件有问题。 routes.rb:1: undefined method `resources’ for main:Object (NoMethodError) 问题出在哪里? resources :plains 这就是我的routes.rb

如何在进行ajax调用后从控制器呈现部分

我在向控制器中的方法发出AJAX请求后尝试渲染部分。 这是我目前的AJAX调用: $(‘.savings_link’).click(function(event){ $.ajax({ type: ‘GET’, url: ‘/topics/savings_easter_egg’, data: { savings: data[key][‘saving’] } , dataType: ‘json’, }); event.preventDefault(); // Prevent link from following its href }); 这个调用当前有效,它命中我的控制器方法,我尝试返回并渲染部分。 def savings_easter_egg @savings = params[:savings] if params[:savings] return render :json => { :html => render_to_string({ :partial => “topics/savings”, :locals => { :savings => @savings } }) } end […]

Rails应用程序中的嵌套表单错误

与此问题相关的模型:用户,朋友,兴趣,person_interest。 Person_interest是多态的,可以存储属于用户或朋友的兴趣。 兴趣预先填充大约。 30个利益。 当用户注册时,他们被要求选择自己的兴趣,然后在表单中输入他们的朋友姓名,选择该人的兴趣。 尝试使用 :check_boxes, :label => false %>来实现此目的 但得到以下错误: NoMethodError in User_steps#show Showing /Users/nelsonkeating/Desktop/ReminDeal/app/views/user_steps/show.html.erb where line #30 raised: undefined method `to_i’ for []:ActiveRecord::Relation Extracted source (around line #30): 27: :end_year => Date.today.year – 12, 28: :order => [:month, :day, :year ] %> 29: [‘male’,’female’] %> 30: :check_boxes, :label => false %> 31: […]

当出现错误时,Rails在请求JSON时呈现HTML

我正在使用Rails作为仅JSON的API服务器,但是当控制器中存在exception时,比如当它不存在时尝试删除ID为1的记录时,Rails不会响应JSON它响应使用HTML,无论是开发中的跟踪还是生产中的通用“出错”页面。 现在我正在救援所有东西并手动吐出JSON响应…… class AmazonAccountsController {:errors => {:bad => “ID doesn’t exist.”}}.to_json end end end 但这似乎不是理想的处理方式。 这是在Rails 3中。

我无法使用守护进程gem运行我的Rails应用程序

我想在我的Rails项目中使用Daemons gem,所以我可以使用Monit轻松监视它,这个gem将允许我创建PID并使用诸如start和stop之类的命令。 无论如何,似乎我不能以某种方式使用它与rails,我创建一个文件,并将其命名为admin: require ‘rubygems’ require ‘daemons’ ROOT_PATH = File.expand_path(“#{File.dirname __FILE__}/../”) require “#{ROOT_PATH}/config/environment” Daemons.run(“#{ROOT_PATH}/script/rails” , :dir_mode => :system, :log_output => true ) 当我尝试运行它时: bundle exec ./bin/admin run — s 我收到此错误: /Users/info/.rvm/gems/ruby-1.9.3-p286/gems/rake-0.8.7/lib/rake/alt_system.rb:32: Use RbConfig instead of obsolete and deprecated Config. => Booting WEBrick => Rails 3.0.5 application starting in development on http://0.0.0.0:3000 => Call with -d […]

.build无法分配尚不存在的外键

我有以下代码为我的用户控制器中的用户创建图片: def new @user = User.new @pictures = @user.pictures.build({:placement => “front”},{:placement => “profile”}) end 但是,当我创建新用户时,它不会自动构建具有“前”或“配置文件”位置的图片。 事实上,图片没有任何更新。 图片模型有 attr_accessible :placement 并在picture.rb belongs_to :user 并在user.rb中 has_many :pictures accepts_nested_attributes_for :pictures, allow_destroy: true 为什么我的构建命令无声地失败? UPDATE 使用.save!,我了解到正在分配@pictures ,但问题是没有user_id与它们相关联。 当我故意分配user_id时,如: def new @user = User.new @pictures = @user.pictures.build({:placement => “front”, :user_id => @user.id},{:placement => “profile”, :user_id => @user.id}) end 它仍然没有分配user_id。 奇怪的是,当我在rails控制台中运行相同的命令时,它会正确分配 […]

如何在Rails 3中通过嵌套表单传递外键属性

我有三个型号: class Client :balancesheets class Balancesheet :destroy accepts_nested_attributes_for :investment_assets, :allow_destroy => true class InvestmentAsset < ActiveRecord::Base belongs_to :balancesheet belongs_to :client 我有两个与外键client_id有关的问题。 首先,当我创建新的余额表时,我使用collection_select从列表中选择客户端。 我宁愿将新的资产负债表链接放在客户端显示页面上,只是将客户端ID传递给表单,这样我就不必从列表中选择客户端或在字段中键入它。 首先,我该怎么做? 其次,investment_asset模型嵌套在balancesheet表单中。 除了investment_asset的client_id属性为空之外,一切正常。 我不知道为什么,因为我的协会似乎没问题。 所以问题是,如何通过嵌套表单传递此client_id属性? 我可以发布模型或控制器,只是让我知道。 更新我已经在这里找到了我的第一个问题的答案。 但是,我仍然试图找出基于该答案的第二部分,即如何通过嵌套表单传递此client_id? 要显示在创建资产负债表时如何通过用户ID,这里是客户端显示页面链接: @client.id) %> 在资产数据表中,我有一个隐藏的字段: 在资产负债表控制器中,这是新的操作: @balancesheet = Balancesheet.new(:client_id => params[:id]) 这很好用。 所以对于investment_asset,我使用的是Ryan Bates nested_form gem ,它对链接有一些不同的语法。 因此,在资产数据表中,添加新的investment_asset的链接是: 我无法弄清楚如何传递用户ID,就像我在资产负债表上所做的那样: (:id => @client.id) 我可以在invest_asset控制器中的新操作中添加相同的内容并添加隐藏字段,但我不确定如何在链接上传递它。 思考?

Rails日期与JSON – 第2部分

我成功地使用鸭子打孔机来重新格式化日期时间返回的日期,基于对其他人的问题给出的有用响应: 用json跟踪日期 我现在正在尝试为日期对象(而不是日期时间)做一个非常类似的事情,所以我修改了补丁如下: class ActiveSupport::Date # I’ve changed TimeWithZone to Date def as_json(options = {}) strftime(‘%Y’) end end …但它不起作用(日期格式与默认的2011-02-03相同)。 关于如何获得这一点的任何提示都非常受欢迎。

启动轨道I18n和url助手似乎将区域设置与id混淆

我刚刚开始尝试更新我们的rails 3.2应用程序以实现国际化。 我在路线中有一个可选的范围,比如 范围“(:locale)”,locale:/ en | es | zh-HK | de | fr / do 如http://guides.rubyonrails.org/i18n.html所述 。 我的url助手就像 watch_url(@watch) 在表单中获取错误 没有路由匹配{:action =>“show”,:controller =>“watches”,:locale =>#”“,”收件人“ =>“”,“attributes”=>“”},状态:{},隐藏:false,评论:“”>} 关于它为什么会发生以及我如何解决它的任何想法? 谢谢! 编辑: 在我的应用程序控制器中,我有 before_filter :set_locale def set_locale I18n.locale = params[:locale] || I18n.default_locale end 和手表控制器的路线(这是一个8岁的专有应用程序,我们有100多个控制器:(,所以我不会包括所有路线)… $ rake routes | grep watch watches GET (/:locale)/watches(.:format) watches#index {:locale=>/en|es|zh-HK|de|fr/} POST (/:locale)/watches(.:format) watches#create {:locale=>/en|es|zh-HK|de|fr/} […]

无法通过Chrome扩展程序跨站点ajax api调用?

我正在尝试创建一个名为chrome应用程序api的chrome扩展程序。 目前api返回json并且工作正常,但是当我尝试将其构建为chrome扩展时,它说: 由于Content-Security-Policy,拒绝从’http://mysite.com/demo?q=hello?callback=jQuery16409466155741829425_1342489669670&_=1342489677171’加载脚本。 我查看了文档http://code.google.com/chrome/extensions/contentSecurityPolicy.html ,除非我将我的网站实施为https版本,否则我听不到这样做。 (在“放宽默认政策”部分下)我不确定我是否理解正确,仅仅因为这个而做出如此大的改变是荒谬的。 我被误解了吗? 或者有解决方法吗? 谢谢。