2016-01-13 154 views
2

我在application_helper如何使用助手定義的腳手架生成模板?

def title(page_title) 
    content_for :title, page_title.to_s 
    end 

定義的功能,我自定義腳手架編輯模板(lib/templates/erb/scaffold/edit.html.erb

<% title "Edit " + [email protected]<%=singular_table_name %>.id.to_s %> 

<%%= render 'form' %> 

但是當我運行rails g scaffold subject title:string contents:text,出現錯誤時:

'template': undefined method 'title'

請告訴我如何在腳手架模板中使用title來自動生成。

+0

鑑於助手只是一個Ruby模塊,您可以簡單地將它包含在某處**以使用它。您是否嘗試在edit.html.erb中嵌入<%include ApplicationHelper%>?您可能需要之前需要它,但我不確定是否在腳手架引擎中啓用了自動加載常量。 –

+0

腳手架不評估這些方法。即使你沒有定義它們,它也會工作,因爲它正在生成包含該內容的文件。所以它們不一定需要被定義或包含。此外,我試圖做同樣的設置,它適用於我。其他地方可能有錯誤。 –

回答

2

我認爲你應該使用的<%%代替<%一樣:

<%% title "Edit " + [email protected]<%=singular_table_name %>.id.to_s %> 

因爲title是沒有支架的lib定義,不NEDD運行generate scaffold編譯時的功能。

0

我覺得這裏有點誤解。這裏有一個支架是什麼,根據Rails Guides

A scaffold in Rails is a full set of model, database migration for that model, controller to manipulate it, views to view and manipulate the data, and a test suite for each of the above.

所以,當你說rails g scaffold subject title:string contents:text,要創建一個模型,Subject,與屬性title(類型爲字符串)和contents(文本類型),和所有可以用它自動創建的文件。

從那裏,你可以在你的.erb文件中使用title。例如:

<% title "Edit " + plural_table_name.capitalize %> 

<%= render 'form' %> 

而且,我不知道你正在嘗試做的:[email protected]<%=singular_table_name %>.id.to_s,但我相當肯定是無效的。