我在Rails 3.1.2项目中使用Twitter Bootstrap 2.0.1,使用bootstrap-sass实现.我正在加载文件bootstrap.css和bootstrap-responsive.css文件,以及bootstrap-collapse.jsJavascript.
我有一个带有类似示例的导航栏的流畅布局.这遵循此处的导航栏"响应变化"说明.它工作正常:如果页面比约940px窄,导航栏会折叠并显示一个"按钮",我可以单击该按钮进行展开.
然而,我的导航栏看起来很好,大约550px宽,即它不需要折叠,除非屏幕非常窄.
如果屏幕宽度小于550px,我如何告诉Bootstrap仅折叠导航栏?
请注意,在这一点上我不希望修改其它响应行为,如堆叠的元素,而不是并排显示他们一边.
我在PowerShell 2.0中使用了一个数组变量.如果没有值,则为$ null,我可以成功测试:
PS C:\> [array]$foo = $null
PS C:\> $foo -eq $null
True
Run Code Online (Sandbox Code Playgroud)
但是当我给它一个值时,$ null的测试不会返回任何内容:
PS C:\> [array]$foo = @("bar")
PS C:\> $foo -eq $null
PS C:\>
Run Code Online (Sandbox Code Playgroud)
"-eq $ null"怎么没有结果?它要么是$ null,要么不是.
确定是否填充数组与$ null相关的正确方法是什么?
我正在使用Rails 3.1.0和Devise 1.4.8,对我们两个都是新手.
我想允许多个用户使用帐户.第一个注册用户创建帐户(可能是他们的公司),然后该用户可以添加更多用户.用户始终只链接到一个帐户.
我有用户和帐户表.缩写模型:
class User < ActiveRecord::Base
belongs_to :account
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :lockable, :timeoutable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
class Account < ActiveRecord::Base
has_many :users, :dependent => :destroy
attr_accessible :name, :account_type
end
Run Code Online (Sandbox Code Playgroud)
问题是,当第一个用户注册时,如何创建帐户和用户?
我是否需要修改/覆盖Devise registrations_controller,就像这里的答案一样?我无法弄清楚如何创建帐户然后将其传递给Devise以创建用户.
account_id已在User模型中.我应该将account_name和account_type添加到用户模型,如果未传入account_id,还要创建一个新的帐户记录?在这种情况下,我试图隐藏Devise中的帐户创建,但不确定这是否有效,因为我仍然需要在注册页面上提示account_name和account_type.
使用Rails 3.1.3和Ruby 1.9.3p0.
我发现默认情况下,Rails不会对表单按钮使用句子大小写.例如,它不是"更新用户"按钮,而是生成"更新用户"按钮.
按钮名称来自ActionView语言环境文件.有没有办法创建一个下调模型名称的默认值?关于插值的Ruby on Rails Guides i18n部分没有涉及到这一点,所以也许这是不可能的.以下不起作用:
en:
helpers:
submit:
update: 'Update %{model}.downcase'
Run Code Online (Sandbox Code Playgroud)
一般来说,我很乐意找到语言环境YAML文件语法的参考.i18n指南涵盖了一些语法,但是查找所有感叹号,各种日期/时间格式等文档会很有帮助.或者我可能为此目的使用Ruby Hash而不是YAML文件?
我有一个PowerShell(2.0)脚本调用另一个.我不仅要接收主输出,还要接收我可以单独使用的其他对象,例如在消息中显示摘要行.
让我们在调用脚本时使用Test2.ps1:
param([String]$SummaryLine)
$Issues = "Potentially long list of issues"
$SummaryLine = "37 issues found"
$Issues
Run Code Online (Sandbox Code Playgroud)
并且Test1.ps1作为调用它的脚本:
$MainOutput = & ".\Test2.ps1" -SummaryLine $SummaryOutput
$MainOutput
$SummaryOutput
Run Code Online (Sandbox Code Playgroud)
输出很简单:
Potentially long list of issues
Run Code Online (Sandbox Code Playgroud)
尽管参数$ SummaryLine由Test2填充,但$ SummaryOutput在Test1中仍未定义.
在调用Test2之前定义$ SummaryOutput没有帮助; 它只是在调用Test2之前保留指定的值.
我已经尝试将$ SummaryOutput和$ SummaryLine设置为[ref]变量(显然可以使用函数),但是在调用Test2之后,$ SummaryOutput.Value属性为$ null.
PowerShell中是否可以返回参数中的值?如果没有,有哪些解决方法?在Test2中直接分配父范围变量?
我正在使用Rails 3.2.8
我最近将选择下拉列表转换为自动完成(使用rails3-jquery-autocomplete),并且我正在尝试更新我的请求规范以填写自动完成.
我的方法是创建一个帮助如图这一要点:
def fill_autocomplete(field, options = {})
fill_in field, :with => options[:with]
selector = "ul.ui-autocomplete a:contains('#{options[:select]}')"
page.should have_selector selector
page.execute_script "$(\"#{selector}\").mouseenter().click()"
end
Run Code Online (Sandbox Code Playgroud)
如果我使用Webkit测试,测试将失败并显示以下消息:
expected css "ul.ui-autocomplete a:contains('Firstname Lastname')" to return something.
Run Code Online (Sandbox Code Playgroud)
如果我用Selenium测试,当我看到在Firefox的测试继续,我也没有看到下拉选择列表中出现.添加sleep 3等待下拉列表无济于事.
我在这里看到capybara-webkit存在一个相关但有点旧的问题,关于何时填充字段,它会立即模糊,这当然会阻止自动完成选择列表出现.但这似乎与那些已经开始工作的人并不相符.
目前是否可以使用RSpec和Capybara测试包含rails3-jquery-autocomplete字段的表单?怎么样?如果没有,有没有办法手动填写相应的隐藏id字段,所以我仍然可以测试表单创建正确的数据?
使用Rails 3.2.3,我有用户和消息模型.每条消息都由用户拥有,每条消息都有一个可选的from_user字段,该字段也带有user.id.
应用程序/模型/ user.rb
class User < ActiveRecord::Base
has_many :messages, :foreign_key => "owner_id", :inverse_of => :owner
has_many :messages, :foreign_key => "from_user_id", :inverse_of => :from_user
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ message.rb
class Message < ActiveRecord::Base
belongs_to :owner, :class_name => "User", :inverse_of => :messages
validates :owner, :presence => true # Every message must have an owner_id
belongs_to :from_user, :class_name => "User", :inverse_of => :messages
end
Run Code Online (Sandbox Code Playgroud)
我看到的问题是该.build方法.使用的主要原因.build是实例化一个(可能受保护的)外键,对吧?(请参阅活动记录关联的Rails指南:"将创建通过其外键的链接.")但是当我运行时
@message = @user.messages.build(<accessible attributes>)
Run Code Online (Sandbox Code Playgroud)
我发现它填写了可选项from_user而不是强制项owner.
有没有办法控制哪个外键.build …
我正在使用Rails 3.2.3和Ruby 1.9.3p0.
我发现我经常要确定一个字符串是否出现在选项列表中.看来我可以使用Ruby数组.include方法:
<% if ['todo','pending','history'].include?(params[:category]) %>
Run Code Online (Sandbox Code Playgroud)
或正则表达式equals-tilde匹配速记与垂直条分隔选项:
<% if params[:category] =~ /todo|pending|history/ %>
Run Code Online (Sandbox Code Playgroud)
在性能方面,一个比另一个好吗?
还有更好的方法吗?
我在这里和这里找到了类似的StackOverflow问题,但仍然无法使其工作.
我正在使用Rails 3.2.8,SimpleForm 2.0.4和Twitter Bootstrap 2.1.1(通过bootstrap-sass gem 2.1.1.0).
用户应该能够从模态弹出窗口添加联系人.如果存在验证错误,它们应该显示为内联,就像用户使用表单的非模态版本(字段周围的红色边框,字段旁边的错误消息)一样.
我像这样加载模态:
<a data-toggle="modal" data-target="#new-contact-modal">Go modal!</a>
Run Code Online (Sandbox Code Playgroud)
这是Bootstrap模式,它调用contacts/contact_fields非模态版本中使用的相同部分.app/views/contacts/_new_modal.html.erb:
<div id="new-contact-modal" class="modal hide fade" tabindex="-1"
role="dialog" aria-labelledby="new-contact-modal-label"
aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h3 id="new-contact-modal-label"><%= t("contacts.new.header") %></h3>
</div>
<%= simple_form_for(@contact,
:remote => true,
:html => {:class => "form-horizontal",
"data-type" => :json }) do |contact_form| %>
<div id="new-contact-body" class="modal-body">
<%= render 'contacts/contact_fields', :f => contact_form %>
</div>
<div class="modal-footer">
<%= contact_form.submit :class => "btn btn-primary", …Run Code Online (Sandbox Code Playgroud) 我必须将pg_dump和pg_restore加载到Heroku,以便我可以将本地数据库加载到Heroku.如何在Heroku上安装pg_dump和pg_restore?他们的地址是什么?
我正在开发一个Rails 3.2.16应用程序,并使用一个免费的网络dyno和没有工作人员dynos部署到Heroku开发帐户.我正在试图确定是否真的需要(付费)工人dyno.
该应用程序发送各种电子邮件.我使用delayed_job_active_record对它们进行排队并将它们发送出去.
我还需要每分钟检查一次通知计数.为此,我使用rufus-scheduler.
rufus-scheduler似乎能够在 Heroku web dyno中运行后台任务/线程.
另一方面,我在delayed_job上找到的所有内容都表明它需要一个单独的工作进程.为什么?如果rufus-scheduler可以在web dyno中运行守护进程,为什么delayed_job不能这样做呢?
我已经测试了以下内容,用于运行我的每分钟任务并处理delayed_jobs,它似乎在单个Heroku web dyno中工作:
配置/初始化/鲁弗斯-scheduler.rb
require 'rufus-scheduler'
require 'delayed/command'
s = Rufus::Scheduler.singleton
s.every '1m', :overlap => false do # Every minute
Rails.logger.info ">> #{Time.now}: rufus-scheduler task started"
# Check for pending notifications and queue to delayed_job
User.send_pending_notifications
# work off delayed_jobs without a separate worker process
Delayed::Worker.new.work_off
end
Run Code Online (Sandbox Code Playgroud)
这似乎很明显,我想知道我是否遗漏了什么?这是处理delayed_job队列的可接受方式,而不会增加单独的工作进程的复杂性和费用吗?
更新
正如@jmettraux所指出的,Heroku将在一小时后闲置一个不活动的网络dyno.我还没有设置它,但让我们假设我正在使用各种保持活动方法中的一种来防止它睡眠: 简单的方法来防止Heroku空转?.
I'm using Rails 3.1 with PostgreSQL 8.4. Let's assume I want/need to use GUID primary keys. One potential drawback is index fragmentation. In MS SQL, a recommended solution for that is to use special sequential GUIDs. One approach to sequential GUIDs is the COMBination GUID that substitutes a 6-byte timestamp for the MAC address portion at the end of the GUID. This has some mainstream adoption: COMBs are available natively in NHibernate (NHibernate/Id/GuidCombGenerator.cs).
I think I've figured out …
activerecord ×2
heroku ×2
jquery ×2
powershell ×2
byref ×1
capybara ×1
css ×1
delayed-job ×1
devise ×1
guid ×1
jquery-ui ×1
null ×1
parameters ×1
regex ×1
rspec ×1
ruby ×1
scope ×1
simple-form ×1
uuid ×1