小编Joe*_*nas的帖子

after_create有多种方法?

我试图在创建之后调用两个方法,但是将它们放入数组中是行不通的...我在rails docs或google中找不到任何东西......有经验的人?

after_create [:do_this, :do_that]
Run Code Online (Sandbox Code Playgroud)

不起作用

ruby-on-rails ruby-on-rails-3 rails-activerecord

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

在Apache中启用了CORS,但是AJAX无法正常工作(chrome说不允许来源)

我试图让两个子域之间的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."

谁知道我错过了什么?

apache ajax jquery ruby-on-rails cors

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

将复杂的postgresql查询/子查询转换为Rails activerecord语法或将数组转换为活动记录关系?

所以我花了很多时间来编写这个查询,然后发现这是一个很难的方式,它返回一个数组而不是一个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)

postgresql activerecord arel ransack ruby-on-rails-4

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

使用带有步数的数字范围的轨生成选择标记

编写rails选择标记的最简单方法是什么,它将为数字1-15生成一个选择步进.5增量?

我知道这必须很简单,但我正在努力学习语法,我知道必须有一种更优雅的方式来编写它而不是我的方法.

谢谢!

forms select ruby-on-rails

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

POW/Rails错误:启动applicationBundler :: GemNotFound时出错:在任何来源中都找不到minitest-4.7.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:in materialize' /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:in specs_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:in requested_specs' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in setup'/ usr setup' /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/ruby​​gems/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/ruby​​gems/core_ext/kernel_require.rb:122:in require' ~/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: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: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/ruby​​gems/core_ext/kernel_require.rb:51:in require' ~/Sites/projectname/config/environment.rb:2:in …

ruby-on-rails rvm ruby-on-rails-3 ruby-on-rails-4 rack-pow

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

Rails 4 app ...在开发环境中javascript不会被触发,除非页面被刷新

所以我的第一个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)

javascript ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
2400
查看次数

在rails4中设置hstore,动态键/值

我在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,就像我在很多例子中看到的那样.

postgresql ruby-on-rails hstore ruby-on-rails-4

5
推荐指数
1
解决办法
2511
查看次数

Postgres JSON列用表单更新单个键/属性

我在更新模型中的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

5
推荐指数
1
解决办法
1756
查看次数

在ruby中重新排序哈希.使一把钥匙永远持续

假设我有一个哈希:

h = {:a=>1, :b=>3, :c=>2, :d=>4}
Run Code Online (Sandbox Code Playgroud)

我想根据键对它进行排序,但我总是想:c last.我真的不关心其他人的顺序,只要:c来自最后一个......

有一个简单的方法吗?

我的想法是获取所有密钥,删除:c,对它们进行排序并将它们放入一个新数组中,然后将:c推入数组中?

ruby arrays sorting hash ruby-on-rails

4
推荐指数
1
解决办法
1929
查看次数

使用open()方法在rails中创建/重命名tempfile

我正在尝试创建一个临时文件,我从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

4
推荐指数
1
解决办法
2242
查看次数