小编Coe*_*ulf的帖子

Rails 4通过方法查找或创建不起作用

我在工作和公司之间有一对多的关联,并且工作正常.在作业表单视图中,我有一个带有自动完成功能的公司名称的text_field.自动完成工作正常,但如果我在自动完成列表中放置了一个公司名称,则find_or_create_by不会创建新公司.

  def company_name
    company.try(:name)
  end

  def company_name=(name)
    @company = Company.find_or_create_by(name: name)
  end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails associations ruby-on-rails-4

53
推荐指数
2
解决办法
3万
查看次数

Rails 4 - has_and_belongs_to_many关联的复选框

我最近在Rails 4中获取has_and_belongs_to_many(HABTM)关联的复选框时遇到了问题.我能够在几个不同的地方找到有关如何使其正常工作的信息,但认为记录少数几个是好的在StackOverflow上的一个地方使它正常工作所需的简单步骤.

作为一个设置假设一个Kennel模型与HADTM关联到Handler.

class Kennel
    has_and_belongs_to_many :handlers
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4

19
推荐指数
3
解决办法
1万
查看次数

如何获得强参数以允许嵌套的fields_for属性?

我有一个带有嵌套fields_for的表单.我试图允许由该嵌套表单生成的参数,但它们被强参数阻止.我使用rails 4.2.4和ruby 2.2.2

我读过一些官方文档:

我已经阅读了相关的SO帖子:

我读过各种博文:

我想我正在按照他们的意思去做,但是我的嵌套属性被强参数拒绝了.我Unpermitted parameters: __template_row__, 0, 1, 2, 3在日志中得到的东西.

这是我的代码:

车型/ enclosure.rb

class Enclosure < ActiveRecord::Base
  has_many :resident_animals, -> { order("year DESC, month DESC") }, dependent: :restrict_with_error
  validates :name, presence: true, uniqueness: {case_sensitive: false}

  accepts_nested_attributes_for :resident_animals, allow_destroy: true, reject_if: :all_blank

  def to_s
    name
   end
end
Run Code Online (Sandbox Code Playgroud)

车型/ resident_animal.rb

class ResidentAnimal < ActiveRecord::Base
  belongs_to :enclosure

  validates_presence_of :enclosure, :year, :month, :color
  ...
end
Run Code Online (Sandbox Code Playgroud)

控制器/ enclosures_controller.rb

class EnclosuresController < ApplicationController …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails strong-parameters ruby-on-rails-4

3
推荐指数
1
解决办法
2817
查看次数

Ruby on Rails:time_select默认值

我一直在寻找解决这个问题的解决方案.甚至在stackoverflow上有很多建议,我尝试了所有这些,但是我的情况都没有,我不知道为什么.

我在我的服务器上运行了当前版本的RoR [4.1.5],我有一个表单,用户必须选择"time from"和"time to"值.

<p>
<%= f.label :Time %><br>
<%= f.time_select :timefrom, {minute_step: 60} %> to <%= f.time_select :timeto, {minute_step: 60} %>
</p>
Run Code Online (Sandbox Code Playgroud)

我从数据库中获取默认值.为了获取它们,我只收集已输入的最后一个时间值.通常是1小时的时间范围:

<% changetimeto = (Production.select("timeto").last.timeto).strftime("%H:%M")   %>
<% changetimefrom = (Production.select("timeto").last.timeto + 3600).strftime("%H:%M")  %>
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

<%= f.time_select :timefrom, {minute_step: 60}, :selected => changetimeto %> to <%= f.time_select :timeto, {minute_step: 60}, :selected => changetimefrom %>
Run Code Online (Sandbox Code Playgroud)

:value =>:default =>

但似乎没什么用,它甚至没有给我一个错误.我检查了变量,changetimeto并且changetimefor它们具有正确的值,如"14:00"和"15:00".但正如我所说,它没有做任何事情.

我也尝试用:default => {hours: '14', minutes: '00'}等分别处理小时和分钟,但这也不起作用,甚至不会导致错误.根本不值一提.它仍然默认为实际时间.

有人对我有推荐或暗示吗?

ruby forms ruby-on-rails time-select

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