【问题标题】:Simple Fields in RailsRails 中的简单字段
【发布时间】:2015-08-18 12:09:38
【问题描述】:

我在show.html.erbPerson 模型中写了这行代码。

 <%= f.simple_fields_for :holidays do |holiday| %>
   <%= holiday.input :number,
                     :label => holiday.day.name,
                     :input_html=>{
                       :required => false
                     } %>

我有两个问题:

1.这里的假期是什么意思。我的意思是它包含什么?

2. :label =&gt; holiday.day.name 行给出错误 => undefined method day

有一个连接表holidays,其中包含(person_id, day_id, number)

【问题讨论】:

  • 你需要做holiday.object.day.name...holiday是表单构建器对象。
  • “我的意思是它包含什么” - 真的吗?很容易亲眼看到它到底包含什么。只需在断点处停止或将holiday 写入日志/标记。
  • 其次,如果您遇到错误,请将其发布在其完整版中。通过省略您认为不相关的信息,您实际上可能会切断该错误中最有趣的部分。在这种情况下,它是“what kind of object的未定义方法'day'”?
  • 我知道很多编程是为了停止代码并查看对象。购买,我正在做的是看到 'holiday' 变量而不是 'holiday.object'。 'holiday' 变量包含很多我想知道的废话。无论如何,谢谢。

标签: ruby-on-rails ruby-on-rails-4 associations embedded-ruby


【解决方案1】:

holiday 是表单构建器对象。

要获取封装在表单构建器对象中的对象,您需要对其调用object 方法。以下将起作用。

holiday.object.day.name

【讨论】:

    【解决方案2】:

    我假设您在Person 模型中有假期关联:

    1. 这里的holiday&lt;%= form_for @person do |f| %&gt; 中的f 相同,是一个表单构建器对象。

    2. 出现错误是因为holiday 本身不是模型的实例,而是表单构建器对象。所以你需要做类似holiday.object.name

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      相关资源
      最近更新 更多