小编Chr*_*eck的帖子

如何在Rails 4枚举中使用i18n

Rails 4 Active Record Enums非常棒,但使用i18n进行翻译的正确模式是什么?

enums ruby-on-rails-4

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

如何避免在嵌套的rails表单上保存空记录

我正在使用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方法运作良好,但它没有给我我需要的一切

  1. valid? 通过验证保持我的空白Addrs
  2. a[:id].blank? 当用户空白和现有记录时避免拒绝

现在,Addr当用户空白时,我需要删除(而不是保存)现有的value.另外,我通过RESTful API公开了Persons和Addrs.我看到两种可能的选择:

  1. 发布处理params哈希以添加神奇的_destroy=1参数.IOW,模拟按下删除按钮的用户活动.
  2. 将其封装在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)

ruby-on-rails nested-forms

18
推荐指数
3
解决办法
8790
查看次数

如何在Heroku预览应用程序postdeploy脚本中设置ENV var

我想在预览应用上设置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)

有什么建议?

heroku environment-variables

12
推荐指数
1
解决办法
1824
查看次数

如何存根:当rspec测试使用respond_with的控制器时,错误集合无效

我重构了我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哈希存根以使其看起来像是一个错误.最好的方法是什么?

rspec-rails ruby-on-rails-3

6
推荐指数
3
解决办法
3031
查看次数

无法使用Poltergeist和PhantomJS测试Angular UI Typeahead

我在测试我的输入输入时遇到问题.我正在使用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_inblur在场上触发,使得盒子消失.我曾经Capybara::Screenshot看过是否有任何建议出现,但没有.输入字段甚至没有得到焦点.

ruby-on-rails phantomjs poltergeist bootstrap-typeahead angular-ui-bootstrap

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