如何el
处理视图?它必须设置,否则事件不会触发(见此处).
但它应该是页面上已有的元素吗?在我的应用程序中,我将(jQuery模板)模板渲染到Fancybox中.el
那个案子应该怎么办?
我有以下型号
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) 所以我开始使用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
,bar
是nil
.
我在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)
任何想法,将不胜感激!
我在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
文档中的示例所示.
我怎样才能摆脱错误信息?
是否有可能在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 …
当我通过"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"的行为有所不同?使用其中一个时加载/未加载的任何东西?
在我的项目中,用户可以输入网站的URL,系统将从该网站获取所有图像.因为src
图像可以是相对的,所以系统将其"标准化",因此:
现在看看这个页面,如果你可以:
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所有浏览器似乎都明白并正确显示它...
我有点困惑,觉得我错过了一些明显的东西......请指出我!
在一个角色中,我试图从另一个角色加载一些变量.(如果该角色包含在当前游戏中,则可以访问变量,但事实并非如此.)
所以我尝试了这个:
- 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)
我究竟做错了什么?
我正在使用Devise 1.3.4对我的应用程序中的后端进行身份验证.几天后我不能再登录了.会发生什么:
我检查了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) nginx ×2
ansible ×1
backbone.js ×1
devise ×1
git ×1
html ×1
image ×1
javascript ×1
json ×1
nested-forms ×1
passenger ×1
pg ×1
rack ×1
rake ×1
rspec ×1
rvm ×1
sendfile ×1
src ×1
ubuntu ×1
ubuntu-8.04 ×1
x-sendfile ×1