2013-09-23 8 views
7

Errore in corso durante il tentativo di configurare un'applicazione di Rails 4 di base per scopi di apprendimento, quindi portami con me! Sto cercando di creare un'app per creare e visualizzare moduli Web personalizzati. Ho un modello di modulo, che ha molti campi. Sono al punto in cui sto cercando di ottenere il lavoro opinione che mi permetterà di creare un nuovo record campo collegato a una specifica forma:Errore Rails 4: impossibile scrivere l'attributo sconosciuto `html '

class Form < ActiveRecord::Base  
    has_many :fields  
end 

class Field < ActiveRecord::Base 
    belongs_to :form 
end 

Sulla mia vista indice Field, che credo di avere impostare fino a correttamente per mostrare solo la campi di una forma specifica (tramite un URL del tipo/forma/1/campi), ho un collegamento come ad esempio:

<%= link_to 'New Field', new_form_field_path(@form) %> 

il file/new.html.erb campi ha this:

<h1>New field</h1> 
<%= render :partial => 'form', :form => @form, :field => @field %> 

E il fi campi/_form.html.erb inizia così:

<%= form_for(@form, @field) do |f| %> 

Il fields_controller.rb ha questo metodo definito:

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 

un modulo con id 1 è già stato creato. Sembra che/forms/1/fields si presenti ok. Ma quando si fa clic sul link "Nuovo Campo", che mi porta a/forms/1/campi/nuovi, ottengo questo errore:

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

Sono abbastanza confuso da ciò che questo errore mi sta dicendo, in modo Sto avendo problemi a capire cosa ho fatto di sbagliato qui. Qualcuno mi può aiutare? Grazie.

risposta

24

Capito. La chiamata a form_for nella vista parziale del campo _form.html.erb richiedeva parentesi quadre, anziché la parentesi. Il metodo vuole un array di due oggetti come primo parametro in questo caso, per non avere i due oggetti passati separatamente:

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

Solo una piccola nota a margine: le parentesi sono facoltative. Potresti scrivere '<% = form_for [@form, @field] do | f | %> 'o' <% = form_for ([@ form, @field]) do | f | %> 'ed entrambi sarebbero corretti. Le parentesi quadre non sono opzionali, indicano che è un array. – 8bithero

Problemi correlati