2011-03-07 21 views
2

如果有人能幫助我解決這個問題,我將不勝感激。紅寶石在rails上:觀察字段以顯示錶格的其餘部分

在我的RoR應用程序中,我有一個基於在一個字段中輸入的值的表單,其餘的表單字段相應地顯示。請在下面找到

表單代碼我的代碼:

<p> Location: <%= f.text_field :LOC %></p> 


<% f.fields_for :detail do |builder| %> 
<p> Type: <%= builder.select(:DET_TYPE, [['Type A', 'Type A'], 
             ['Type B', 'Type B'], 
             ],{ :prompt => "Please select"} 
             ) %> 
</p> 

<%= observe_field("sub_detail_DET_TYPE", :frequency => 1, 
:url => { :controller => 'references', :action => :display_prod_method }, 
:with => "'id='+value") %> 

<div id="div1"></div> 

<% end %> 

在我引用的控制器:

def display_prod_method 
    @type = (params[:id]) 
end 

display_prod_method.rjs:

page.replace_html "div1", :partial => "prodMethod" 

_prodMethod.html.erb部分:

<% if @type == "Type A" %> 
<p>Production Method: <%= builder.select(:PROD_METHOD, [['Method A', 'Method A'], 
                ['Method B', 'Method B'], 
                ],{ :prompt => "Please select"} 
               ) %> 
</p> 
<% end %> 

問題是,如果只有部分文本,當我選擇'Type A'時,它會呈現在我的主窗體中。然而,當我在部分放在下面的代碼,它根本不顯示 -

<%= builder.select(:PROD_METHOD, [['Method A', 'Method A'], 
                 ['Method B', 'Method B'], 
                 ],{ :prompt => "Please select"} 
                ) %> 

請有人可以提供一些線索這對我來說。

非常感謝您的幫助:)

回答

1

那是因爲你還沒有接觸到你的局部形式建設者。因爲它周圍沒有form_for

所以你應該去靜態標記功能。

在局部將這個:

<%= select_tag :prod_method, [['Method A', 'Method A'],['Method B', 'Method B']], { :prompt => "Please select"} %> 

支出關注的命名,也許你有,因爲它封裝在fields_for調整此。

編輯:

其實你應該嘗試產生錯誤,請檢查您的軌道服務器控制檯,因爲錯誤不會在你的,因爲AJAX調用的瀏覽器中可見。

+0

非常感謝您的建議,但它似乎並未將所選值存儲在表中的prod_method列中。 – Kim 2011-03-07 16:40:05

+0

hm ...嘗試命名選擇標記「sub [detail] [PROD_METHOD]」,而不是:prod_method – sled 2011-03-07 16:52:40