谁能向我解释这意味着什么?我从未见过这个构造 - 取自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.但我不懂语法,也找不到任何关于它的文档.
我对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) 我是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之后显示,但这感觉就像是黑客.似乎应该有一种"轨道方式"来做到这一点.
想法?
有没有人能够从应用程序范围的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)