Ruby on Rails,方法未定义

时间:2017-08-01 22:47:50

标签: ruby-on-rails ruby

我对铁轨上的红宝石很新。我正在尝试创建一个文本字段来分配我的一个变量(end_date),但我一直收到这个错误:

undefined method `end_date' for #<Quiz:0x007fccd1e0f9c0>

这是我的代码:

<%# Main Canvas where cardes places %>
<div class="column large-11" id="main">
  <%= form_for @quiz do |q| %>
    <%= q.label :quiz_name %>
    <%= q.text_field :quiz_name %>
    <%= q.label :end_date %>
    <%= q.text_field :end_date %>
    <%= hidden_field_tag 'selected', 'none' %>
    <%= q.hidden_field :classroom_id, value: @classroom_id%>

  <%= q.submit "Create Quiz", class: "expanded button" %>
  <% end %>
  <%= form_tag("/quiz/#{@classroom_id}/copy", method: "get") do %>
  <%= label :id, "ID" %>
  <%= text_field_tag "id", "" %>
  <%= submit_tag "Copy Quiz By ID", class: "expanded button" %>
  <% end %>

</div>

1 个答案:

答案 0 :(得分:0)

让我分解这些不同部分如何相互关联,这有望让您更容易排除故障。

<%= form_for @quiz do |q| %>

您在此处调用form_for来创建绑定到@quiz对象的表单。它会产生一个 form builder 对象作为参数q

<%= q.text_field :quiz_name %>

您在此处使用名为quiz_name的字段在表单构建器上调用text_field方法。这意味着它将生成文本输入,并在quiz_name上调用@quiz方法以查找当前值。

因此,考虑到背景,应该清楚为什么会看到这个错误:

<%= q.text_field :end_date %>

您告诉表单构建器调用@quiz.end_date来获取此字段的值,但该方法不存在。

您还没有为我们提供足够的代码示例来确定您希望此方法存在的原因。也许这是您已经添加到测验表中的字段,但还没有运行迁移?这应该是Quiz的虚拟属性吗?或者您可能只想发送一个未连接到此表单内Quiz模型的字段。 (您可以使用一组单独的帮助程序来完成此操作,在本例中为text_field_tag,这使您可以更灵活地获取数据来源)。