繁体   English   中英

Ruby on Rails,方法未定义

[英]Ruby on Rails, method undefined

我是红宝石的新手。 我正在尝试创建一个文本字段来分配我的变量之一(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>

让我分解一下这些不同部分之间的相互关系,希望它们可以使您更轻松地进行故障排除。

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

在这里,您要调用form_for来创建绑定到@quiz对象的表单。 它产生一个表单生成器对象作为参数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来完成此操作),以使您更加灵活地选择数据的来源)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM