2014-09-22 97 views
0

查看:Rails的渲染來自其他控制器選擇選項

<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  

回答

0

是什麼型號的你的表單在這裏代表?在控制器上保存這種數據通常不是一個好習慣。你應該把它放在你的模型類中,可能是一個常量。

假如你有一個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> 
+0

我需要的是呈現從另一個控制器已經存在的選項,以避免幹。無論如何,感謝您的幫助。 :) – Gotchit 2014-09-22 05:57:20

0

Helper

,您要使用好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的的基本構建塊之一,並允許您打造最適應的系統:

enter image description here

具體來說,MVC意味着每當您的應用程序接收到一個請求,它將請求路由到您的控制器,然後將從您的型號建立數據,顯示您的數據在您的視圖。這裏的區別是,爲了給你打電話要的方法,將他們屬於必須裝載

如上圖所示,只有特定的控制器&模型類加載每個請求。如果你想在這些內部調用一個方法,只要在請求的時候加載就可以了。或者,你會想要加載一個類總是目前,你將能夠調用方法,只要你需要

+0

謝謝你! :) – Gotchit 2014-09-22 08:03:20