10

学習目的で基本的な Rails 4 アプリをセットアップしようとしてエラーが発生しましたが、ご容赦ください。カスタム Web フォームを作成して表示するアプリを作成しようとしています。多くのフィールドを持つフォームモデルがあります。特定のフォームに添付された新しいフィールド レコードを作成できるようにするビューを機能させようとしているところです。

class Form < ActiveRecord::Base    
    has_many :fields    
end

class Field < ActiveRecord::Base
    belongs_to :form
end

特定のフォームのフィールドのみを (/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 に移動する [New Field] リンクをクリックすると、次のエラーが表示されます。

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"}

このエラーが何を伝えているのかかなり混乱しているので、ここで何が間違っていたのかを理解するのに苦労しています. 誰でも私を助けることができますか?ありがとう。

4

1 に答える 1

30

とった。_form.html.erb フィールド部分ビューでの form_for の呼び出しには、括弧の代わりに角括弧が必要でした。この場合、メソッドは最初のパラメータとして 2 つのオブジェクトの配列を必要とし、2 つのオブジェクトを別々に渡す必要はありません。

<%= form_for [@form, @field] do |f| %>
于 2013-09-23T03:31:10.930 に答える