2013-03-22 57 views
5

我使用nested_form寶石未定義的方法`values_at」使用nested_form寶石

這裏時收到錯誤

ActionView::Template::Error (undefined method `values_at' for nil:NilClass): 

是我的代碼

模型

class Poll < ActiveRecord::Base 

    attr_accessible :question, :poll_answers_attributes 
    has_many :poll_answers 
    accepts_nested_attributes_for :poll_answers 
end 

class PollAnswer < ActiveRecord::Base 
    belongs_to :poll 
    attr_accessible :answer 
end 

查看

=nested_form_for [:admin, @poll], mutipart: true, class: "form-horizontal" do |f| 
    .span6 
     .control-group 
     =f.label :question, class: "control-label" 
     .controls 
      =f.text_field :question, rows: "5", class: "span5" 
     = f.link_to_add "Add a Answer", :poll_answers 
     =f.submit "Create Post", class: "btn btn-primary" 

堆棧跟蹤

/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/builder_mixin.rb:41:in `block in link_to_add' 
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:53:in `call' 
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:53:in `after_nested_form_callbacks' 
/home/abid/.bundler/ruby/1.9.1/nested_form-6232dd853c27/lib/nested_form/view_helper.rb:8:in `block in nested_form_for' 

什麼想法?

回答

12

正如文件中所提及的nested_form寶石,你以前link_to_load按鈕提嵌套對象的field_for。我以前沒有使用這個gem,但是在閱讀文檔之後,我猜測這個。

這裏的形式看起來像

<%= nested_form_for [:admin, @poll], mutipart: true, class: "form-horizontal" do |f| %> 
    <%= f.text_field :question %> 
    <%= f.fields_for :poll_answers do |poll_ans_form| %> 
    <%= poll_ans_form.text_field :name %> 
    <%= poll_ans_form.link_to_remove "Remove this task" %> 
    <% end %> 
    <p><%= f.link_to_add "Add a Answer", :poll_answers %></p> 
<% end %> 
1

你應該檢查出simple_form做這種類型的嵌套窗體。這很容易。根據你的模型發佈,這樣的事情應該工作:

# controller 
    def new 
    @poll = Poll.new 
    end 

# new.html.erb 
<%= simple_form_for @poll do |f| %> 
    <%= f.simple_fields_for :poll_answer do |l| %> 
    <%= l.input :answer, autofocus: true %> 
    <%= l.submit "Add", class: 'small round button' %> 
    <% end %> 
<% end %> 

那麼這個職位應該得到發送到投票#創建控制器,如果你有開放的路線。從那裏,你可以在上面運用你的邏輯。

希望有所幫助。

+0

我需要添加在運行時的答案,可以有3,4,5任意數量的答案,因此多數民衆贊成爲什麼我使用nested_form寶石 – Abid 2013-03-22 15:44:13

相關問題