2014-10-02 23 views
0

我試圖在聯繫頁面上顯示錶單,但它來自另一個控制器。從Ruby on Rails 4中的另一個控制器呈現表單

當前的代碼會導致「在形式上第一個參數不能包含零或爲空」

搜索完後看起來存在與不通過本地哈希的一個問題。

我怎樣才能正確地傳遞與這段代碼的當地人,使其工作?

inquiries_controller.rb

class InquiriesController < ApplicationController 

def new 
    @inquiry = Inquiry.new 
end 
def create 
    @inquiry = Inquiry.new(params[:inquiry]) 
     if @inquiry.deliver 
      render :thank_you 
     else 
      render :new 
    end 
    end 
end 

inquiries_form.html.erb

​​

static_pages \ contact.html.erb

<%= render "inquiries/form", 
      :inquiry => @inquiry %> 
+0

我認爲問題是':inquiry => @ inquiry'設置了一個名爲'inquiry'的局部變量(no @),而您的表單需要一個實例變量(@)。 – PSkocik 2014-10-02 11:06:56

回答

1

HI嘗試添加這對您的StaticPages控制器

class StaticPagesController < ApplicationController 
    def contact 
     @inquiry = Inquiry.new 
    end 
    end 

它是一個非常常見的錯誤。此外,我相信你的表格也可能是錯誤的,除非你使用允許這種類型的表單的寶石。讓我知道這是否會解決您的錯誤。

+0

這工作。 不知道這是否表達正確,但...標準是定義在部分渲染的控制器上的動作變量,而不是部分來自哪個控制器? – sasdev 2014-10-03 07:22:00

+0

是的! :)記得了解MVC模式真的很重要。如果您有兩個不同的控制器,一個是家庭控制器,另一個是後控制器,並且您希望能夠將表單或操作從後控制器呈現到家庭控制器,則必須通過將@post = Post.new添加到家中來編輯控制器控制器能夠執行發佈MVC到主頁的操作。我希望這個幫助。然後你可以<%= render'posts/form%>到主頁。 – 2014-10-03 16:33:02

相關問題