我试图在创建之后调用两个方法,但是将它们放入数组中是行不通的...我在rails docs或google中找不到任何东西......有经验的人?
after_create [:do_this, :do_that]
Run Code Online (Sandbox Code Playgroud)
不起作用
我试图让两个子域之间的AJAX工作.
rails.mydomain.com和mydomain.com
在apache中,在/ etc/apache2/sites-available /我有我的rails.mydomain.com文件:
<VirtualHost *:80>
Header add Access-Control-Allow-Origin "http://www.mydomain.com"
Header add Access-Control-Allow-Origin "http://www.dev-mydomain.com"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试从http://www.dev-mydomain.com做一个简单的ajax测试请求时,在Chrome中我得到:"XMLHttpRequest无法加载http://rails.mydomain.com/directory.来源http:/ Access-Control-Allow-Origin不允许/www.dev-mydomain.com."
谁知道我错过了什么?
所以我花了很多时间来编写这个查询,然后发现这是一个很难的方式,它返回一个数组而不是一个activerecord关系.DOH.这不会是一个问题,但我需要在这些结果上使用Ransack,这需要关系.
所以,基本上,我需要使用语法.joins()和.select()将其转换为Rails,但我尝试过的所有内容都出错了.我猜我可能需要潜入AREL?
或者,如果这可以很容易地转换为具有最小性能问题的activerecord关系并保留我的别名列,那么它也可以工作!
任何帮助或建议都受到赞赏!
find_by_sql("
SELECT
subq.*,
renewal_date,
days_until_due,
renewal_stage_sort,
(
CASE
WHEN renewal_stage_sort IS NOT NULL THEN
CASE
WHEN days_until_due > 42 AND renewal_stage_sort >= 1 THEN TRUE
WHEN days_until_due > 28 AND days_until_due < 43 AND renewal_stage_sort >= 2 THEN TRUE
WHEN days_until_due > 13 AND days_until_due < 29 AND renewal_stage_sort >= 3 THEN TRUE
WHEN days_until_due > -1 AND days_until_due < 14 AND renewal_stage_sort >= 4 THEN TRUE
WHEN days_until_due < 0 AND renewal_stage_sort >= 5 THEN …
Run Code Online (Sandbox Code Playgroud) 编写rails选择标记的最简单方法是什么,它将为数字1-15生成一个选择步进.5增量?
我知道这必须很简单,但我正在努力学习语法,我知道必须有一种更优雅的方式来编写它而不是我的方法.
谢谢!
我只需要删除RVM并重新安装,然后安装Ruby 2.0.0
我可以在项目中从命令行运行rails console,但无法在浏览器中加载它.
我正在阅读关于.bash_profile和.bashrc的一些答案,而且我的〜文件夹中都没有.我试过搞乱.bashrc文件,但没有任何帮助.
在我的.bashrc中:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)
rvm列表:
=* ruby-2.0.0-p247 [ x86_64 ]
Run Code Online (Sandbox Code Playgroud)
rails -v
Rails 4.0.0
Run Code Online (Sandbox Code Playgroud)
现在当我尝试启动我的应用程序时,我看到了这个:
Bundler :: GemNotFound:找不到任何来源中的minitest-4.7.5 /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/spec_set.rb :92:在
block in materialize' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in
地图上!' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:inmaterialize' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in
specs'/usr/local/rvm/gems / ruby-2.0 .0-p247/gems/bundler-1.3.5/lib/bundler/definition.rb:159:inspecs_for' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in
requested_specs'/ usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5 /lib/bundler/environment.rb:18:inrequested_specs' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in
setup'/ usrsetup' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in
/ local /rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler.rb:120:in '/ usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:require' /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in
在require'/ usr/local/rvm/rubies/中进行 救援ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:122:inrequire' ~/Sites/projectname/config/boot.rb:4:in
' /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby /site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:inrequire' /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in
需要'〜/ Sites/projectname/config/application.rb:1:in<top (required)>' /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in
require'/ usr/local/rvm/rubies/ruby-2.0 . 0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:inrequire' ~/Sites/projectname/config/environment.rb:2:in …
所以我的第一个rails4应用程序遇到了一个奇怪的问题,我的页面javascript没有被触发,除非我重新加载页面.
对于我的资产管道JS和内联content_for JS都是如此.
在我的/assets/javascripts/cars.js文件中:
$(function(){
$("#car_car_make_id").on("change", function(){
//SET MODELS
$.ajax({
url: "/car_makes/" + $(this).val() + "/car_models",
type: "GET",
dataType: "json",
cache: false
})
.done(function(data) { model_list(data) })
.fail(function() { alert("error"); })
});
});
function model_list(data) {
$("#car_car_model_id").empty();
$.each(data, function(i,v){
$("<option />").val(v.id).text(v.name).appendTo("#car_car_model_id");
});
//ON COMPLETE SHOW
$("#car_model_div").show();
}
Run Code Online (Sandbox Code Playgroud)
带有content_for的页面内联:
<% content_for :head do %>
<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('yt_vid', {
height: '390', …
Run Code Online (Sandbox Code Playgroud) 我在rails4应用程序中第一次使用Hstore,我在表单中使用javascript来构建hstore列的动态表单字段(:schema)
在rails 4中,我不需要在我的模型中添加任何setter/getter方法,对吗?
在我的表单中,我正在构建动态输入字段并允许用户设置键/值对.很像Hstore Heroku演示应用程序
所以基本上我的表格会有输入
input name="app[schema][dynamic_key1]" value="whatever value"
input name="app[schema][dynamic_key2]" value="whatever value2"
Run Code Online (Sandbox Code Playgroud)
在我的App Controller中:
def app_params
params.require(:app).permit(:name, :title, :schema )
end
Run Code Online (Sandbox Code Playgroud)
但是,当我创建新的App记录时,我的架构hstore值不会保存.我看到了一些关于制作强大的参数的东西:schema => []但是仍然不起作用.
由于我不知道这些值是什么,我无法为这些设置store_accessors,就像我在很多例子中看到的那样.
我在更新模型中的rails JSON列时遇到了一些问题.
我有一个OrderItem模型,带有:options列和postgres json数据类型.
我有一个表单,我只是尝试更新该JSON列中的两个属性.但是,当我从我的控制器运行更新操作时,它将整个选项列重置为仅我的表单中的字段,而不是仅更新两个单独的属性.这是一个错误吗?我在Rails 4.2.1上,从我读到的应该可以工作,我可以手动更新rails控制台中的各个属性.
在我的控制器中:
def update
@order_item.update(order_item_params)
respond_with(:update)
end
private
def order_item_params
params.require(:order_item).permit(:product_id, :quantity, options:[:esp, :size])
end
Run Code Online (Sandbox Code Playgroud)
我的表格:
<%= f.fields_for :options do |option| %>
<%= option.label :size %>
<%= option.select :size, options_for_select((5..13), item.options["size"]) %>
<%= option.select :esp, options_for_select(["yes","no"], item.options["esp"]) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
提交该表单时,它不会更新各个属性.它将整个json列重置为仅这两个属性
Form Data
utf8:?
_method:patch
order_item[quantity]:2
order_item[options][size]:5
order_item[options][esp]:no
Run Code Online (Sandbox Code Playgroud)
在控制台中我可以轻松地手动更新属性...
o = OrderItem.last
o.options["esp"] = "yes"
o.save
#PERSISTS!
Run Code Online (Sandbox Code Playgroud) postgresql activerecord json ruby-on-rails ruby-on-rails-4.2
假设我有一个哈希:
h = {:a=>1, :b=>3, :c=>2, :d=>4}
Run Code Online (Sandbox Code Playgroud)
我想根据键对它进行排序,但我总是想:c last.我真的不关心其他人的顺序,只要:c来自最后一个......
有一个简单的方法吗?
我的想法是获取所有密钥,删除:c,对它们进行排序并将它们放入一个新数组中,然后将:c推入数组中?
我正在尝试创建一个临时文件,我从URL下载:例如,这个JPEG图像在URL中没有扩展名:
http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7
您可以看到它没有.jpg扩展名...所以我想将它保存为临时文件,但在保存之前将.jpg扩展名附加到它.这可能吗?或者,如果那不可能,保存后重命名临时文件?
现在,我可以通过说明来创建临时文件
file = open("http://s7d9.scene7.com/is/image/jewelrymedia/Verragio14123_V_918_CU7")
哪个写临时文件...但这没有用,因为临时文件也没有扩展名
#<Tempfile:/var/folders/3m/t1v11gzj32n0fdbhwr823y600000gn/T/open-uri20150309-21935-qw7870>
ruby ruby-on-rails ruby-on-rails-3 carrierwave ruby-on-rails-4
postgresql ×3
activerecord ×2
ruby ×2
ajax ×1
apache ×1
arel ×1
arrays ×1
carrierwave ×1
cors ×1
forms ×1
hash ×1
hstore ×1
javascript ×1
jquery ×1
json ×1
rack-pow ×1
ransack ×1
rvm ×1
select ×1
sorting ×1