小编dea*_*bry的帖子

在这个奇怪的数组键构造中,这个按位或做什么?

谁能向我解释这意味着什么?我从未见过这个构造 - 取自Prestashop doc

foreach ( $languages as $language )
{
  echo '<div id="test_' . $language['id_lang'|'id_lang'] .... // <-- What the??
  // ... 
}
Run Code Online (Sandbox Code Playgroud)

$ language包含以下键:

Array
(
    [id_lang] => 1
    [name] => English (English)
    // and others... 
)
Run Code Online (Sandbox Code Playgroud)

结果是它需要$ language ["id_lang"]的值 - 1.但我不懂语法,也找不到任何关于它的文档.

php

37
推荐指数
3
解决办法
1292
查看次数

FactoryGirl + RSpec + Rails 3'未定义方法<attribute> ='

我对rails和TDD都很陌生(毫无疑问,从我的帖子中可以看出这一点)并且很难将我的大脑包裹在Rspec和FactoryGirl周围.

我正在使用Rails 3,rspec和工厂女孩:

gem 'rails', '3.0.3'
# ...   
gem 'rspec-rails', '~>2.4.0'
gem 'factory_girl_rails'
Run Code Online (Sandbox Code Playgroud)

我有一个用户模型,我在开发过程中已成功运行测试,但随后需要添加一个名为"source"的属性.它用于确定用户记录最初来自何处(本地与LDAP).

在我的factories.rb文件中,我定义了几个工厂,看起来如下所示:

# An alumnus account tied to LDAP
Factory.define :alumnus, :class => User do |f|
  f.first_name "Mickey"
  f.last_name  "Mouse"
  f.username   "mickeymouse"
  f.password   "strongpassword"
  f.source     "directory"
end
Run Code Online (Sandbox Code Playgroud)

我有一个宏定义(直到现在一直在工作),看起来像这样:

def login(user)
  before(:each) do
    sign_out :user
    sign_in Factory.create(user)
  end
end
Run Code Online (Sandbox Code Playgroud)

我在多个规范中调用它(例如来自users_controller_spec.rb):

describe "for non-admins or managers" do
  login(:alumnus)

  it "should deny access" do
    get :index
    response.should redirect_to(destroy_user_session_path)
  end

end
Run Code Online (Sandbox Code Playgroud)

如果我没有指定"source"属性,一切正常,但是一旦我这样做,运行测试时会出现类似的错误

  12) UsersController for non-admins or managers should deny access …
Run Code Online (Sandbox Code Playgroud)

rspec2 ruby-on-rails-3 factory-bot

22
推荐指数
2
解决办法
9730
查看次数

在Rails中处理无效表单提交的正确方法

我是rails的新手,我不确定我是否同意我在一些教程中所做的事情.该问题与如何处理无效的表单提交有关.做事的标准方式似乎是:

class ThingsController < ApplicationController


  # POST /things
  def create

    @thing = Thing.new(params[:thing])

    if @thing.save
      flash[:notice] = 'Thing created'
      redirect_to(@thing)
    else
      render :action => :new
    end

  end
Run Code Online (Sandbox Code Playgroud)

当@ thing.save失败时,将向用户显示相同的表单,预填充其刚刚输入的值,以及出现错误的闪存.到目前为止一切都那么好,除了现在URL已从/ things/new更改为things /,而人们期望将其呈现为索引视图.

此外,如果用户刷新页面,他现在正在查看索引视图.如果他点击回来,他会被提示重新提交表格,我一直试图避免.如果我redirect_to(new_thing_path),用户以前的提交将丢失,错误消息也将丢失.

我意识到RESTful,这个方法可能是"正确的",因为事物对象的创建应该是POST到/ thing的结果,但是用户界面方面,我并不特别关心它.

我可以"手动"在用户会话中保存无效的@thing对象,在我将其重定向回new_thing_path之后显示,但这感觉就像是黑客.似乎应该有一种"轨道方式"来做到这一点.

想法?

ruby-on-rails-3

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

订购ThinkingSphinx.search结果

有没有人能够从应用程序范围的ThinkingSphinx查询中对搜索结果进行排序?

我有以下设置:

class Resource < ActiveRecord::Base

  # ... 

  define_index do
    indexes :title, :as => :sortable_name, :sortable => true
    indexes :tease
    indexes :description
    indexes authors(:name), :as => :author, :facet => true
  end

end
Run Code Online (Sandbox Code Playgroud)

class Author < ActiveRecord::Base

  # ...

  define_index do
    indexes :name, :as => :sortable_name, :sortable => true
    indexes :title
    indexes :bio
  end

end
Run Code Online (Sandbox Code Playgroud)

我希望能够搜索这些模型(以及其他2个模型),并按字母顺序对结果进行排序.我需要排序的字段可以有不同的名称,因此我使用以下命令对它们进行索引:as =>:sortable_name(欢迎提供更好的建议).

以下所有工作都像魅力:

Author.search 'something', :order => :sortable_name

Resource.search 'something', :order => :sortable_name

ThinkingSphinx.search 'something'
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试

ThinkingSphinx.search 'something', :order => :sortable_name
Run Code Online (Sandbox Code Playgroud)

我明白了:

ThinkingSphinx::SphinxError: index author_core,resource_core: …
Run Code Online (Sandbox Code Playgroud)

thinking-sphinx ruby-on-rails-3

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