ruby-on-rails - Rails 4 错误 : can't write unknown attribute `html'

标签 ruby-on-rails ruby-on-rails-4

在尝试设置用于学习目的的基本 Rails 4 应用程序时遇到错误,请耐心等待!我正在尝试创建一个应用程序来创建和显示自定义 Web 表单。我有一个表单模型,它有很多字段。我正试图让 View 工作,这将允许我创建附加到特定表单的新字段记录:

class Form < ActiveRecord::Base    
    has_many :fields    
end

class Field < ActiveRecord::Base
    belongs_to :form
end

在我的字段索引 View 中,我相信我已经正确设置为仅显示特定表单的字段(通过像/forms/1/fields 这样的 url),我有一个这样的链接:
<%= link_to 'New Field', new_form_field_path(@form) %>

fields/new.html.erb 文件有这个:
<h1>New field</h1>
<%= render :partial => 'form', :form => @form, :field => @field %>

fields/_form.html.erb 开始是这样的:
<%= form_for(@form, @field) do |f| %>

fields_controller.rb 定义了这个方法:
def new
  @form = Form.find(params[:form_id]) #unsure if this is necessary/correct, but its presence doesn't effect the error i'm getting
  @field = Field.new
end

已创建 ID 为 1 的表单。看起来/forms/1/fields 正常。但是,当我单击“新字段”链接时,将我带到/forms/1/fields/new,我收到此错误:
Showing /home/moskie/Projects/FormBuilder/app/views/fields/_form.html.erb where line #1 raised:

can't write unknown attribute `html'
Extracted source (around line #1):

  <%= form_for(@form, @field) do |f| %>
    <% if @field.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@field.errors.count, "error") %> prohibited this field from being saved:</h2>

Trace of template inclusion: app/views/fields/new.html.erb

Rails.root: /home/moskie/Projects/FormBuilder

Application Trace | Framework Trace | Full Trace
app/views/fields/_form.html.erb:1:in `_app_views_fields__form_html_erb___1866877160086017450_70350628427620'
app/views/fields/new.html.erb:3:in `_app_views_fields_new_html_erb___1515443138224133845_70350627074400'
Request

Parameters:

{"form_id"=>"1"}

我对这个错误告诉我的内容感到非常困惑,所以我很难弄清楚我在这里做错了什么。谁能帮我吗?谢谢。

最佳答案

知道了。在 _form.html.erb 字段部分 View 中对 form_for 的调用需要方括号,而不是圆括号。在这种情况下,该方法需要两个对象的数组作为其第一个参数,而不是分别传入两个对象:

<%= form_for [@form, @field] do |f| %>

关于ruby-on-rails - Rails 4 错误 : can't write unknown attribute `html' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18950451/

相关文章:

javascript - 在Rails中,如何调用AJAX函数并在完成后刷新页面?

ruby-on-rails - rails : validation between columns

javascript - 圆滑的轮播错误 : null is not an object (evaluating 'b.$slides.add' )

ruby-on-rails - has_many :through with class_name and foreign_key

mysql - 将数组保存在 Rails 4 中

ruby-on-rails-4 - 使用自定义设计 Controller 进行管理

ruby-on-rails - 在 Ruby on Rails 中自动更新 created_by 和 updated_by 值

ruby-on-rails - Rails ActiveAdmin 最大列长度

javascript - 自动完成后 Rails 重定向

mysql - rake db :migrate error: db_development. 位置不存在:显示 `locations` 的完整字段