2012-06-26 42 views
0

我在頁面頂部有一個select_tag字段,並試圖根據用戶選擇獲取選定的選項來更改頁面上的內容。rails 3.1 select_tag用法

我是一名學習者,已經找到了一些信息,但沒有詳細的例子和關於如何最好的方法和實施的良好解釋。

的場景如下: 我有一個項目和文檔之間和在我的意見,列出文件之一,我想只顯示所有屬於當前選定的項目中的文件一個belongs_to的關聯選擇標籤。

將選定項目的標識傳遞給僅通過link_to標記顯示指定項目標識的文檔的文檔索引操作。這會因此刷新視圖中正確的文檔,但我認爲這不是正確的方法,並且我不能使用link_to標籤作爲select_tag中的選項。任何人都可以幫助並提供一個例子嗎

+0

你知道嗎,可以選擇可用的選項?如果是這樣,並且只有少數,link_to's會這樣做。你也可以用pull down做一個select_tag。 –

+0

可用選項根據用戶創建的項目而有所不同。用戶基本上可以創建項目並創建屬於項目的文檔。我想使用select_tag的原因是因爲當我查看文檔時,我只想根據所選項目查看文檔。我有部分select_tag,因爲我需要它在各種視圖中顯示,因爲我有其他各種屬於特定項目的項目。 – eiro90

回答

0

在你的控制器:

def index 
    if params[:project] 
    @documents = Document.where(:project => params[:project] 
    else 
    @projects = Project.all 
    end 
end 

在表單/視圖:

<%= form_tag 'projects', :method => :get do %> 
    <%= options_from_collection_for_select(@projects, :id, :name) 
    <%= submit_tag %> 
<% end %> 

<% if @documents %> 
    <%= @documents.each do |d| %> 
    .... 
    <% end > 
<% end %> 
+0

我希望不必使用提交標籤的表單,任何想法如何使用select_tag來實現這一點呢? – eiro90

+0

options_from_collection_for_select基本上是一個select_tag。無論哪種情況,您都需要提交選擇信息以獲得您想要的回覆。除非您在Javascript/Ajax中執行某些操作,否則它們都不會自動更新您的頁面。 –

+0

好的,謝謝。你能告訴我一個如何使用Javascript/Ajax和select_tag來實現它的例子嗎? – eiro90

0

我建議使用的form.select方法和options_for_select如

f.select :attribute, options_for_select(@array, default_value) 

和在您應該使用提交的參數創建或更新您的控制器

n = record.new(:attribute => params[:attribute]) 

樂趣

+0

有沒有辦法實現這一點,而不使用表單? – eiro90

+0

是的,這也不是很常見..你可以在控制器中調用一個自定義動作,這將創建一個帶有前綴值的新記錄,儘管我沒有看到不想要表單的這一點?如果你不想看到它,請使用隱藏字段:) – dennis