小编Man*_*rer的帖子

Backbone.View"el"混乱

如何el处理视图?它必须设置,否则事件不会触发(见此处).

但它应该是页面上已有的元素吗?在我的应用程序中,我将(jQuery模板)模板渲染到Fancybox中.el那个案子应该怎么办?

javascript backbone.js backbone-views

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

accepts_nested_attributes_for链接到现有记录,而不是创建新记录

我有以下型号

class Order < AR::Base
  has_many :products

  accepts_nested_attributes_for :products
end

class Product < AR::Base
  belongs_to :order
  has_and_belongs_to_many :stores

  accepts_nested_attributes_for :stores
end

class Store < AR::Base
  has_and_belongs_to_many :products
end
Run Code Online (Sandbox Code Playgroud)

现在我有一个订单视图,我想更新产品的商店.问题是我只想将产品连接到我的数据库中的现有商店,而不是创建新商店.

我在订单视图中的表单看起来像这样(使用Formtastic):

= semantic_form_for @order do |f|
  = f.inputs :for => :live_products do |live_products_form|
    = live_products_form.inputs :for => :stores do |stores_form|
      = stores_form.input :name, :as => :select, :collection => Store.all.map(&:name)
Run Code Online (Sandbox Code Playgroud)

虽然它嵌套它工作正常.问题是,当我选择商店并尝试更新订单(以及产品和商店)时,Rails会尝试创建一个具有该名称的新商店.我希望它只使用现有商店并将产品连接到该商店.

任何帮助赞赏!

编辑1:

最后,我以一种非常粗暴的方式解决了这个问题:

# ProductsController

def update
  [...]

  # Filter out stores
  stores_attributes = params[:product].delete(:stores_attributes)

  @product.attributes = params[:product]

  if stores_attributes.present?
    # …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-forms nested-attributes

15
推荐指数
1
解决办法
5306
查看次数

在Rails <4中设置Postgres JSON列的默认值

所以我开始使用Postgres JSON数据类型,现在你可以用它做很多有趣的事情.在我的一个Rails应用程序中,它还没有Rails 4(已经添加了对Postgres JSON的支持),我添加了一个这样的JSON列:

create_table :foo do |t|
  t.column :bar, :json
end
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何为列设置默认值.我试着像所有的变化{},'{}','{}'::json,'[]'::json等,但我要么得到一个错误的迁移运行,或者它根本不起作用,这意味着迁移运行时,但是,当我创建一个新的Foo,barnil.

json ruby-on-rails pg rails-postgresql ruby-on-rails-3.2

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

无法更新RVM - "致命:无法找到'http'的远程助手"

我在Ubuntu 8.04上运行RVM 1.1.6,突然之间我再也无法更新到最新版本了.

~ rvm get head

Original installed RVM version:

rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

fatal: Unable to find remote helper for 'http'

Installed RVM HEAD version:

rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]
Run Code Online (Sandbox Code Playgroud)

谷歌搜索"致命:无法找到'http'的远程助手'"只是给了我一些结果,似乎早期版本的Git不支持HTTP,但我的Git版本是相当近期的.

~ git --version
git version 1.7.3.2
Run Code Online (Sandbox Code Playgroud)

任何想法,将不胜感激!

git ubuntu ubuntu-8.04 rvm

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

Nginx错误日志中的消息"X-Accel-Mapping标头丢失"

我在Ubuntu 8.04上使用Nginx 1.0.0和Passenger 3.0.7运行Rails 3站点.

在我的Nginx error.log中,我开始看到X-Accel-Mapping header missing相当多的消息.谷歌搜索导致我的文档Rack::Sendfile,并在Nginx的文档.

现在,我的应用程序可以通过多个域访问,我send_file在我的应用程序中使用它来提供特定于他们请求的域的一些文件,例如,如果你来domain1.com/favicon.ico我查找favicon in public/websites/domain1/favicon.ico.这工作正常,我认为我不需要/想要让Nginx参与并创建一些私有区域,我存储这些文件,正如Rack::Sendfile文档中的示例所示.

我怎样才能摆脱错误信息?

rack x-sendfile nginx sendfile

9
推荐指数
1
解决办法
8975
查看次数

升级Phusion Passenger而不重新安装Nginx

是否有可能在Phusion Passenger运行时将其升级到更新的版本(在我的情况下使用Nginx)?

我使用安装了Passenger 4.0.0.rc6 passenger-install-nginx-module.我的Nginx配置现在包含

passenger_root /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.rc6;
passenger_ruby /usr/local/bin/ruby;
Run Code Online (Sandbox Code Playgroud)

现在我想升级到Passenger 4.0.2.我可以安装gem,但是当我passenger-install-nginx-module再次运行时,它会尝试重新编译并重新安装Nginx.(我认为在我指定的位置已经安装了Nginx会非常聪明--prefix)

我尝试手动更改passenger_root为新的Passenger gem位置但是我在Nginx错误日志中收到以下错误:

2013/05/12 12:30:13 [alert] 14298#0: Unable to start the Phusion Passenger watchdog because its executable (/usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.2/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'passenger_root' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'passenger_root' directive, whichever is applicable. (-1: Unknown error)
Run Code Online (Sandbox Code Playgroud)

显然PassengerWatchdog是在运行时构建的passenger-install-nginx-module …

ruby-on-rails passenger nginx

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

通过"rake spec"调用时RSpec规范失败,通过"spec spec"调用时传递

当我通过"rake spec"运行它时,我的一个规范失败了,但当我使用RSpec可执行文件"spec"时通过了.当我在ActionMailer视图中使用url帮助程序时,规范失败.错误消息是:

auction_url failed to generate from {:action=>"show", :state=>"asd", :slug=>"asd", :controller=>"auctions"}, expected: {:action=>"show", :controller=>"auctions"}, diff: {:state=>"asd", :slug=>"asd"}
Run Code Online (Sandbox Code Playgroud)

:state和:slug是url的必需属性.路线看起来像这样:

map.auction ':state/:slug', :controller => 'auctions', :action => 'show'
Run Code Online (Sandbox Code Playgroud)

我在环境文件中设置了在ActionMailer视图中使用url帮助程序所需的主机:

ActionMailer::Base.default_url_options[:host] = 'myhost.com'
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?为什么"rake spec"与"spec spec"的行为有所不同?使用其中一个时加载/未加载的任何东西?

rake rspec ruby-on-rails

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

相对img src被解析为绝对...我错过了什么?

在我的项目中,用户可以输入网站的URL,系统将从该网站获取所有图像.因为src图像可以是相对的,所以系统将其"标准化",因此:

  • src ="http://host.com/image1.png"的图像变为"http://host.com/image1.png"(无变化)
  • src ="/ image2.png"的图像变为"http://host.com/image2.png"(前置主机)
  • 带有src ="image3.png"的"http://host.com/sub/dir/page.html"上的图像变为"http://host.com/sub/dir/image3.png"(前置主机和路径)

现在看看这个页面,如果你可以:

http://www.presentkuriren.se/presenter/4/728/Karlek/Pasta---hjartan.html

如果您查看源代码,主图像将实现为 <img src="prodbilder/large/JJI10002.jpg"...

这将使我得出结论,绝对路径是http://www.presentkuriren.se/presenter/4/728/Karlek/prodbilder/large/JJI10002.jpg,但事实并非如此.这是http://www.presentkuriren.se/prodbilder/large/JJI10002.jpg所有浏览器似乎都明白并正确显示它...

我有点困惑,觉得我错过了一些明显的东西......请指出我!

html image relative-path absolute-path src

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

在角色任务中包含变量

在一个角色中,我试图从另一个角色加载一些变量.(如果该角色包含在当前游戏中,则可以访问变量,但事实并非如此.)

所以我尝试了这个:

- include_vars: ../../another_role/defaults/main.yml
Run Code Online (Sandbox Code Playgroud)

但它不起作用,没有错误,但变量仍未定义.所以我试着变得聪明并将文件符号链接到vars/another_role_defaults.yml我想要使​​用vars的角色,然后像这样包含它:

- include_vars: another_role_defaults.yml
Run Code Online (Sandbox Code Playgroud)

相同的结果,没有错误(如果找不到文件,为什么不抛出错误??)但变量仍未定义.我也试过这个,但是还是没有雪茄.

- include_vars: ../vars/another_role_defaults.yml
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ansible ansible-playbook

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

设计:突然无法再登录了

我正在使用Devise 1.3.4对我的应用程序中的后端进行身份验证.几天后我不能再登录了.会发生什么:

  • 我转到登录页面/ admin/sign_in
  • 使用良好的凭据登录
  • 在日志中查看登录工作(设置了last_sign_in_at,current_sign_in_at和current_sign_in_ip,增加了sign_in_count)
  • 设计会话控制器尝试将我转发到我在应用程序控制器中指定的after_sign_in_path_for(Admin :: DashboardsController #show)
  • 然后突然再次呈现登录页面.没有重定向,没有任何东西.

我检查了before_filters,它肯定是Devise的autorize_admin_user!导致问题的过滤器(调用之前的过滤器,未调用之后的过滤器).这意味着即使在成功登录后,它也无法识别我已登录.

我意识到在没有看到大部分代码的情况下很难找到解决方案.所以我的第一个问题是:

我该如何调试此错误?如何回溯登录不起作用的位置?我是否需要深入研究守望者?可以是会话/ cookie问题吗?我怎么调试呢?

所有想法都赞赏!

这就是日志所说的:

Started GET "/admin/sign_in" for 127.0.0.1 at 2011-05-20 13:49:11 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all coffeescripts
  Processing by Admin::SessionsController#new as HTML
Rendered admin/shared/_header.html.haml (3.1ms)
Rendered admin/shared/_menu.html.haml (1.7ms)
Rendered admin/sessions/new.html.haml within layouts/admin (128.7ms)
Completed 200 OK in 171ms (Views: 133.0ms | ActiveRecord: 0.0ms)


Started POST "/admin/sign_in" for 127.0.0.1 at 2011-05-20 13:49:15 +0200
[Barista] Compiling all scripts for barista
[Barista] Compiling all …
Run Code Online (Sandbox Code Playgroud)

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

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