2015-05-21 34 views
0

我剛剛開始使用rails表單工作,儘管我已經多次搜索api文檔,但我一直無法弄清楚如何正確使用它。Rails - select_tag表單助手工作不正常

基本上,在我的應用程序中,我有一個表單來放置手動訂單(送貨)。我希望有一個選擇標籤來指定要運送到的狀態。我正在使用預先存在的SQLServer數據庫以及我想要顯示的列,並編輯爲:SHIPTOSTATE。但是,當我編輯訂單實例時,表單總是顯示「AL」,並且更改狀態並不實際更新表單中的發貨狀態。有人能指出我在這裏做錯了嗎?

我的表單其餘部分工作得很漂亮,因爲表單主要是文本字段。文本字段更新很好,但select_tag仍然很麻煩。

這裏是有問題的代碼片段:

<%= select_tag :SHIPTOSTATE, options_for_select(["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]) %> 
+1

我複製你的代碼行,並把它放在我的一種形式,它似乎發送所選擇的選項,不只是「AL」。你的意思是你有':SHIPTOSTATE'' text_field',你想用'select_tag'中的選項來更新嗎? – Clark

+0

哦,對不起@Clark。這是我的不好,不清楚。我的select_tag顯示所有的狀態。不只是「AL」。但是,如果我點擊具有「CA」的SHIPTOSTATE的訂單實例,它將顯示「AL」而不是「CA」。實際上編輯和更新狀態不起作用。如果我將「CA」更改爲「LA」,我的數據庫中沒有任何更改。那有意義嗎? – James

+1

您的應用程序是否依賴具有PK列,狀態名稱,狀態縮寫等的「狀態」表? – MarsAtomic

回答

0

它自己的select_tag不知道你連接的是哪個對象。您需要提供當前值。您可以在options_for_select調用中添加第二個參數。

options_for_select([ 「AL」, 「AK」 ...], 「當前狀態」)

然後,你必須明確地看PARAMS [:SHIPTOSTATE]在您的控制器方法。

您可能也在使用form_for。在這種情況下,你會想使用類似f.select,而不是使用select_tag都:

<%= form_for @your_object do |f| %> 
    # ... 
    <%= f.select :SHIPTOSTATE, ["AL","AK"...] 
    # ... 

    <%= f.submit %> 
<% end %> 
+0

f.select做到了!表單正在更新。非常感謝@msergeant。我沒有使用一個訂單實例,這似乎是選擇靜態的原因。 – James

1

你加:SHIPTOSTATE允許內部控制的方法?

+0

不,我沒有。我現在要嘗試一下。謝謝! – James

+0

好吧,@Panczo,我在我的訂單控制器中將SHIPTOSTATE添加到了permit方法中,但問題依然存在。這是我應該做的事,儘管如此,所以謝謝。 – James

+0

@Jimi我很高興我可以幫你:) – Panczo

0

當你正在處理一個模型,使用Rails中的約定,這是罕見的,你應該使用select_tag幫手 - 你通常會使用select幫手,這樣的事情:

= f.select :SHIPTOSTATE, %w[AL AK AZ AR ..etc] 

如果更改爲使用該幫助程序不適用於您,那麼您需要向我們顯示您的控制器,或者您的模型架構,以便我們可以看到此處可能存在什麼問題。