<div class="field">
<%= f.label :company %><br />
<%= f.select :company, %w(A B C), :selected => 'B'%>
</div>
控制器,我想渲染「選擇選項」(這不是我的觀點控制器):
def load_company_code
@company_code = [['A', 1], ['B', 2], ['C', 3]]
end
<div class="field">
<%= f.label :company %><br />
<%= f.select :company, %w(A B C), :selected => 'B'%>
</div>
控制器,我想渲染「選擇選項」(這不是我的觀點控制器):
def load_company_code
@company_code = [['A', 1], ['B', 2], ['C', 3]]
end
是什麼型號的你的表單在這裏代表?在控制器上保存這種數據通常不是一個好習慣。你應該把它放在你的模型類中,可能是一個常量。
假如你有一個Employee類,企業是員工的一個屬性,形式是一個Employee對象:
<%= form_for @employee do |f| %>
這將是很好,以保持公司代碼爲你的員工類的常量:
class Employee < ActiveRecord::Base
COMPANY_CODES = [['A', 1], ['B', 2], ['C', 3]]
end
然後,你的窗體標記內:
<div class="field">
<%= f.label :company %><br />
<%= f.select :company, Employee::COMPANY_CODES %>
</div>
,您要使用好helper
:
#app/helpers/application_helper.rb
class ApplicationHelper
def company_codes
[['A', 1], ['B', 2], ['C', 3]]
end
end
你必須記住,Rails是隻爲紅寶石(事實上,它實際上是一個gem
),一個框架,這意味着雖然Rails有一個巨大的數額最後,它與所有其他應用程序相同 - 它將加載一系列提供功能的文件
您遇到的一個問題是,包含controllers
中的方法意味着這些方法將只有可以在加載該特定控制器時訪問。在另一方面,傭工的Rails加載每次運行你的應用程序的時間,從而使您隨時需要調用它們的方法:
<%= f.label :company %>
<%= f.select :company, company_codes, :selected => 'B'%>
-
框架
爲了給你一個這個東西如何工作的簡要概述,你最好看看MVC (Model View Controller) programming pattern。這是Rails的的基本構建塊之一,並允許您打造最適應的系統:
具體來說,MVC意味着每當您的應用程序接收到一個請求,它將請求路由到您的控制器,然後將從您的型號建立數據,顯示您的數據在您的視圖。這裏的區別是,爲了給你打電話要的方法,將類他們屬於必須裝載
如上圖所示,只有特定的控制器&模型類加載每個請求。如果你想在這些內部調用一個方法,只要在請求的時候加載就可以了。或者,你會想要加載一個類總是目前,你將能夠調用方法,只要你需要
謝謝你! :) – Gotchit 2014-09-22 08:03:20
我需要的是呈現從另一個控制器已經存在的選項,以避免幹。無論如何,感謝您的幫助。 :) – Gotchit 2014-09-22 05:57:20