2013-09-23 38 views
7

Chạy vào lỗi khi cố gắng thiết lập ứng dụng Rails 4 cơ bản cho mục đích học tập, vì vậy hãy chịu với tôi! Tôi đang cố tạo ứng dụng để tạo và hiển thị biểu mẫu web tùy chỉnh. Tôi có một mẫu biểu mẫu, trong đó có nhiều trường. Tôi đang ở thời điểm mà tôi đang cố gắng để có được những hoạt động quan điểm cho rằng sẽ cho phép tôi để tạo ra một kỷ lục Dòng mới gắn liền với một mẫu cụ thể:Lỗi Rails 4: không thể ghi thuộc tính không xác định `html '

class Form < ActiveRecord::Base  
    has_many :fields  
end 

class Field < ActiveRecord::Base 
    belongs_to :form 
end 

Vào xem index Dòng của tôi, mà tôi tin rằng tôi có thiết lập để một cách chính xác để chỉ hiển thị các Fields của một hình thức cụ thể (thông qua một url như/hình/1/lĩnh vực), tôi có một liên kết như vậy:

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

các trường/file new.html.erb có này:

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

Và fi ruộng/_form.html.erb bắt đầu như thế này:

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

Các fields_controller.rb có phương pháp này định nghĩa:

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 

Một Form với id 1 đã được tạo ra. Có vẻ như/forms/1/fields xuất hiện ok. Nhưng khi tôi nhấp vào "New Field" liên kết, trong đó có tôi/Forms/1/lĩnh vực/mới, tôi nhận được lỗi này:

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

tôi khá bối rối bởi những gì lỗi này là nói cho tôi, vì vậy Tôi đang gặp khó khăn trong việc tìm ra những gì tôi đã làm sai ở đây. Ai có thể giúp tôi không? Cảm ơn.

Trả lời

24

OK. Cuộc gọi đến form_for trong _form.html.erb Xem một phần trường cần dấu ngoặc vuông, thay vì dấu ngoặc đơn. Phương thức này muốn một mảng của hai đối tượng là tham số đầu tiên trong trường hợp này, không có hai đối tượng được truyền riêng:

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

Chỉ cần một chút lưu ý: Dấu ngoặc đơn là tùy chọn. Bạn có thể viết '<% ​​= form_for [@form, @field] do | f | %> 'hoặc' <% = form_for ([@ form, @field]) do | f | %> 'và cả hai đều đúng. Các dấu ngoặc vuông không phải là tùy chọn, chúng chỉ ra rằng nó là một mảng. – 8bithero

Các vấn đề liên quan