小编Pla*_*Ton的帖子

RSpec新手:"Update attributes => false"无法识别

刚开始使用RSpec.除了一个带有嵌套控制器的规范外,一切都很顺利.

我正在尝试确保当使用无效参数更新"评论"资源(嵌套在"帖子"下)时,它会呈现"编辑"模板.我很难让rspec识别出:update_attributes => false trigger.如果有人有任何建议,他们将非常感激.尝试过以下代码:

  def mock_comment(stubs={})
    stubs[:post] = return_post
    stubs[:user] = return_user
    @mock_comment ||= mock_model(Comment, stubs).as_null_object
  end

  describe "with invalid paramters" dog
    it "re-renders the 'edit' template" do
      Comment.stub(:find).with("12") { mock_comment(:update_attributes => false) }
      put :update, :post_id => mock_comment.post.id, :id => "12"
      response.should render_template("edit")
    end
  end
Run Code Online (Sandbox Code Playgroud)

和控制器:

  def update
    @comment = Comment.find(params[:id])
    respond_to do |format|
      if @comment.update_attributes(params[:comment])
        flash[:notice] = 'Post successfully updated'
        format.html { redirect_to(@comment.post) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" } …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails-3

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

数据库模式:手动排序表的标准方法是什么?

我有一个(Postgres)数据库表,我想添加一个手动'排序'字段.在应用程序的前端,我将有一个拖放字段,以便用户可以手动重新排序条目,然后应该发布一个AJAX请求,重新排序数据库中的条目,我只是想知道如何在数据库中编排这个.

例如,我能想到的最明显的选择是为每个条目增加'sort'整数,并使用排序值> =新排序的选项,但这将过度(并且我假设,不必要地)在数据库,如果这些列表超过少数几个项目.

另一种选择是将'sort'列设为BigDecimal并使其成为值

SortValue[A] = SortValue[B] + (SortValue[C] - SortValue[B])/2
Run Code Online (Sandbox Code Playgroud)

其中A是我重新排序的字段,B是它上面的字段,C是它下面的字段,但这似乎是一个非常混乱的解决方案,更不用说可能受小数位限制的限制.

我确信这是一个非常普遍的问题.有效地允许手动排序数据库表的标准方法是什么?

干杯...

database postgresql database-design

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

jQuery .ajax():唯一的AJAX查询标识符?

我有一些ajax查询,它们在AJAX查询的不同阶段(beforeSend,成功,失败,完成)中创建和处理(外部)DOM元素。当其他查询仍在处理时,可以触发多个查询,我想知道如何为每个查询标识DOM元素以触发正确事件的事件。

那么,jQuery .ajax是否提供对唯一查询标识符的访问权限,我可以将其解析为每个相应DOM元素的ID?

$.ajax({
    UNIQUE_ID_NEEDED_HERE = ??? # Need to get unique identifier for this AJAX query
    url: '/my/query',
    data: my_data,
    dataType: "json",
    beforeSend: function (response) {
        $('#ajax_messages').append('<div class="loadingStatus" id="' + UNIQUE_ID_NEEDED_HERE + '">Re-ordering tasks</div>');
    },
    success: (message, text, response) {
        $(UNIQUE_ID_NEEDED_HERE).attr('class', 'successfulStatus');
        $(UNIQUE_ID_NEEDED_HERE).html('Tasks re-ordered');
    }
});
Run Code Online (Sandbox Code Playgroud)

如果没有,任何替代的想法表示赞赏。

javascript ajax jquery coffeescript

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

Backbone和Rails关联:避免JSON HashWithIndifferentAccess错误

我正试图让我的骨干协会在rails应用程序中工作,而我在尝试更新现有模型时遇到了困难.特别是,Rails抛出以下错误:

在2012-01-04 02:36:14 +1000开始PUT"/ posts/2"for 127.0.0.1
由PostsController处理#news更新为JSON参数:{"post"=> {"content"=>"Seconderona", "created_at"=>"2012-01-03T10:51:09Z","id"=> 2,"title"=>"第二次测试帖子","updated_at"=>"2012-01-03T10:51:09Z ","comments"=> [{}]},"id"=>"2"}后期加载(0.2ms)SELECT"posts".*FROM"posts"WHERE"posts"."id"=?LIMIT 1 [["id","2"]]警告:无法批量分配受保护的属性:id已完成500内部服务器错误15ms

ActiveRecord :: AssociationTypeMismatch(评论(#70104367824560)预期,获得ActiveSupport :: HashWithIndifferentAccess(#70104367278120)):
app/controllers/posts_controller.rb:62:in update'block in update'
app/controllers/posts_controller.rb:61:in

一些东西:

这是在(例如)触发的:

c = window.router.comments.models[0]
c.save({content: 'Changed content'})
Run Code Online (Sandbox Code Playgroud)

此外,是的,'accepts_nested_attributes_for'出现在模型中.

下面的(违规)代码几乎是从thougtbot的"rails on rails"电子书中逐字记录的,我也尝试过遵循骨干关系宝石的文档.都引发了这个错误.任何想法赞赏,代码如下

铁路'后'模型

class Post < ActiveRecord::Base
  has_many :comments

  accepts_nested_attributes_for :comments

  def as_json(options = nil)
    super((options || {}).merge(include: { comments: { only: [content] } } ))
  end
end
Run Code Online (Sandbox Code Playgroud)

铁路'评论'模型

class Comment < ActiveRecord::Base
  belongs_to :post

  accepts_nested_attributes_for :post

  def as_json(options = nil)
    super((options || {}).merge(include: { …
Run Code Online (Sandbox Code Playgroud)

javascript json ruby-on-rails coffeescript backbone.js

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

jQuery:按值计算数组元素

我有一组元素组装:

timeArray = [];
$('.time_select').each(function(i, selected) {
  timeArray[i] = $(selected).val();
});
Run Code Online (Sandbox Code Playgroud)

哪个.time_select是一组不同HTML选择标记的类.

我想做的是计算特定值出现的次数timeArray.奇怪的是,我还没有找到任何简洁的解决方案......当然有一种简单的方法可以做到这一点?

arrays jquery

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

在没有特定值的数组中查找第一个值

我怀疑的简单问题,但仍然是:

我正在寻找一种有效的方法从一个没有特定值的数组中获取第一个元素.例如,给定

["Fred", "Fred", "Fred", "James", "Alex", "Fred"]
Run Code Online (Sandbox Code Playgroud)

我想回归"詹姆斯"

我可以通过类似的方式做到这一点

thearray.select { |i| i != "Fred" }.first
Run Code Online (Sandbox Code Playgroud)

但是这会在返回值之前迭代每个元素(包括alex和最后一个fred).

所以 - 我希望有一个简单的方法来做到这一点,不会遍历整个数组 - 直到它找到一个值.任何想法都赞赏.

ruby

3
推荐指数
1
解决办法
907
查看次数

确定DOM元素的范围

我只是想清理一些jQuery,并且无法弄清楚调用特定dom元素的jQuery调用的调用.举个例子,我有以下代码:

$('#outer-element .first-class').html('wanna');
$('#outer-element .second-class').html('scope');
$('#outer-element .third-class').html('better');
Run Code Online (Sandbox Code Playgroud)

我猜测调用一个常见的外部元素调用的每个第一/第二/第三类调用是一种更优雅的方法,我只是不确定语法是做什么的.我在猜测一些事情

$('#outer-element').SOMETHINGGOESHERE(function() {
  $(this).find('.first-class').html('wanna');
  $(this).find('.second-class').html('scope');
  $(this).find('.third-class').html('better');
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?还有什么比我上面提到的更优雅?简而言之 - 我知道上面的内容很丑陋.我正在寻找一种比较漂亮的JavaScript方法.

javascript jquery

3
推荐指数
1
解决办法
96
查看次数

Backbone:将变量从路由器传递到视图

我有一个骨干路由器

@collection = new Backbonedemo.Collections.Posts()
@flashes = new Backbone.Collection.Flashes()
Run Code Online (Sandbox Code Playgroud)

在它的initialize方法.

在路由器的new方法中,有这样的:

new: ->
  view = new Backbonedemo.Views.PostsNew(collection: @collection, flashes: @flashes)
  $('#posts_container').html(view.render().el)
Run Code Online (Sandbox Code Playgroud)

@collection变量将在就好了,但是render(),console.log @flashes回报undefined.

那么,我错过了什么?

javascript coffeescript backbone.js

3
推荐指数
1
解决办法
1041
查看次数

Rails 3.1/Sprockets:将控制器变量(或助手)注入javascript资产

我有一个动作

def new 
  @test_var = 'i want this to show'
end
Run Code Online (Sandbox Code Playgroud)

我想要做的就是将其注入到为该页面调用的javascript中.例如:

#app/assets/javascript/my_model.js.coffee.erb
$ ->
  console.log('<%= @test_var %>')
Run Code Online (Sandbox Code Playgroud)

我猜这不起作用,因为在访问控制器之前编译了coffeescript/erb ...所以,如果我想在3.1中将控制器变量注入JavaScript文件(客户端 - 不能通过ajax访问),我应该怎么做呢?

ruby-on-rails-3.1 sprockets

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

Vim:inoremap在缓冲区中工作,而不是在.vimrc中

我真的很想在我的.vimrc文件中包含以下内容:

inoremap <Tab> <C-x><C-u>
Run Code Online (Sandbox Code Playgroud)

如果我将它设置在一个缓冲区(通过:inoremap <Tab> <C-x><C-u>)中,它就像我希望的那样工作.

但是,如果我将它放在我的.vimrc中,它似乎根本没有被承认.

我在下面附上了我的.vimrc.一些东西:

  • 对.vimrc文件进行了其他更改,因此它不是错误的文件
  • 尝试在.vimrc的最底部添加并仍然无法正常工作,因此它不会被覆盖

任何想法都赞赏.非常感谢.

" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
  finish
endif

" Word complete
" :autocmd BufEnter * call DoWordComplete() 
" let g:WC_min_len = 4


" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
map j gj
map k gk

set showmatch …
Run Code Online (Sandbox Code Playgroud)

vim

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