2015-11-05 40 views
0

我有一個聯繫表單設置並正在處理「聯繫人」頁面。但是,當我將該表單複製到另一個頁面時,出現此錯誤:'表單中的第一個參數不能包含零或爲空'。在多個頁面上使用相同表單時Ruby on Rails錯誤

這裏是我的ContactController:

class ContactsController < ApplicationController 

    def new 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(params[:contact]) 

    if @contact.valid? 
     ContactMailer.contact_email(@contact).deliver_now 
     redirect_to new_contact_path, notice: "Your email has been sent. Thank you." 
    else 
     render :new 
    end 
    end 

end 

下面是其他頁面控制器:

class GolfcoursesController < ApplicationController 
    protect_from_forgery 

    def index 
    @golf_courses = GolfCourse.all 
    end 

    def show 
    @golf_courses = GolfCourse.all 
    @golfcourse = GolfCourse.find_by(slug: params[:slug]) 
    @holes = @golfcourse.golf_holes 
    end 

    def events 
    end 

    def membership 
    end 

    def practice_facilities 
    end 

    def contact 
    end 

    def golf 
    @golf_courses = GolfCourse.all 
    end 

    def new 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(params[:contact]) 

    if @contact.valid? 
     ContactMailer.contact_email(@contact).deliver_now 
     redirect_to new_contact_path, notice: "Your email has been sent. Thank you." 
    else 
     render :new 
    end 
    end 
end 

這裏是形式:

<div class="container"> 
    <h4>Let us know if you have any questions.</h4> 
    <%= form_for @contact, :html => {:role => 'form'} do |f| %> 
     <div class="form-group"> 
      <%= f.label :name, 'Enter your name:' %> 
      <%= f.text_field :name, class: 'form-control' %> 
     </div> 
     <div class="form-group"> 
      <%= f.label :email, 'Email:' %> 
      <%= f.email_field :email, class: 'form-control' %> 
     </div> 
     <div class="form-group"> 
      <%= f.label :message, 'Message:' %> 
      <%= f.text_area :message, class: 'form-control', :rows => 3 %> 
     </div> 

     <div class="form-group"> 
      <%= f.submit 'Submit', class: 'btn btn-default' %> 
     </div> 

    <% end %> 
</div> 

提前任何幫助謝謝!

+0

你所說的「另一頁」是什麼意思? 「其他頁面」是否有非'nil'' Contact'實例?如果它由另一個控制器動作顯示,則「ContactController」與它無關。 –

+0

它沒有顯示在另一個控制器中。基本上,我所做的只是將聯繫人表單從聯繫人頁面複製並粘貼到另一個需要聯繫表單的頁面上。我沒有改變任何其他文件中的其他內容。 –

+0

哪個控制器操作是您的新頁面? – eirikir

回答

0

'First argument in form cannot contain nil or be empty'

您還應該在其他控制器中初始化@contact

如果你想分享表格,我建議使用partials並傳入當地人。這使得你的代碼也有點幹。

作爲參考也看到鐵軌指南: http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

+0

謝謝你的回答,布賴恩。我將@contact添加到了其他頁面控制器,但沒有更改錯誤。就使用部分而言 - 表格中有一些變化。我對Rails完全陌生。所以我相信答案正在我的臉上。我只是沒有意識到它... –

+0

那麼你在其他控制器中調用哪個動作來顯示頁面?任何機會的行動「聯繫」?如果是這樣,那麼你還沒有在那個動作中定義'@ contact'。或者你在調用不同的操作? –

+0

我終於明白了。你是對的。我不理解你的權利。在'其他頁面控制器'中,我在錯誤的地方調用了@contact。非常感謝您的幫助,Bryan! –

相關問題