Rails 4 Active Record Enums非常棒,但使用i18n进行翻译的正确模式是什么?
我正在使用nested_form宝石作为我的AddressBook关系.当用户清空现有的值时Addr,我想删除它Addr而不是用空白保存value
class Person < ActiveRecord::Base
has_many :addrs, dependent: :destroy
attr_accessible :name, :addrs_attributes
accepts_nested_attributes_for :addrs, reject_if: :addr_blank, allow_destroy: true
def addr_blank(a)
valid? && a[:id].blank? && a[:value].blank?
end
class Addr < ActiveRecord::Base
belongs_to :person
attr_accessible :kind, :label, :value, :person_id
Run Code Online (Sandbox Code Playgroud)
我的:reject_if方法运作良好,但它没有给我我需要的一切
valid? 通过验证保持我的空白Addrsa[:id].blank? 当用户空白和现有记录时避免拒绝现在,Addr当用户空白时,我需要删除(而不是保存)现有的value.另外,我通过RESTful API公开了Persons和Addrs.我看到两种可能的选择:
params哈希以添加神奇的_destroy=1参数.IOW,模拟按下删除按钮的用户活动.Addr模型中,以便将带有空白的更新value有效地视为删除.基于这里的建议是我如何实现它:
people_controller.rb
def update
@person = Person.find(params[:id])
@person.destroy_blank_addrs(params[:person])
respond_to do |format| …Run Code Online (Sandbox Code Playgroud) 我想在预览应用上设置HOSTenv var $HEROKU_APP_NAME.herokuapps.com.看起来我不能这样做,app.json因为这是一个计算值.
我希望在像这样的"postdeploy"脚本中这样做
heroku config:set HOST="`heroku config:get HEROKU_APP_NAME -a neon-dev-pr-520`.herokuapps.com"
Run Code Online (Sandbox Code Playgroud)
但它想要以Heroku用户身份验证我.唉,这也不起作用:
export HOST=$HEROKU_APP_NAME.herokuapps.com
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我重构了我OrgController的使用respond_with,现在控制器规范脚手架失败了这条消息:
1) OrgsController POST create with invalid params re-renders the 'new' template
Failure/Error: response.should render_template("new")
expecting <"new"> but rendering with <"">
Run Code Online (Sandbox Code Playgroud)
规范看起来像这样:
it "re-renders the 'new' template" do
Org.any_instance.stub(:save).and_return(false)
post :create, {:org => {}}, valid_session
response.should render_template("new")
end
Run Code Online (Sandbox Code Playgroud)
我已经读过我应该将:errors哈希存根以使其看起来像是一个错误.最好的方法是什么?
我在测试我的输入输入时遇到问题.我正在使用Rails,RSpec,Capybara,Angular UI 0.10,AngularJS,Poltergeist.这是我的测试:
create(:user, name: "Test User")
fill_in 'User', with: "Test"
find('#delegations').find('li.active').click
Run Code Online (Sandbox Code Playgroud)
如果我使用Chrome驱动程序运行它,它会成功运行.但是,当使用Poltergeist运行时,虽然服务器收到请求并相应地返回用户,但未显示建议框.
我认为这fill_in是blur在场上触发,使得盒子消失.我曾经Capybara::Screenshot看过是否有任何建议出现,但没有.输入字段甚至没有得到焦点.
ruby-on-rails phantomjs poltergeist bootstrap-typeahead angular-ui-bootstrap