你得到那個特定的錯誤,因爲$('#id_name').val()
是JavaScript的,不是Ruby,但你已經把它放在erb標籤中。
當您在瀏覽器中訪問頁面/documents/3
時,Rails將在您的控制器中運行代碼,並將一些HTML發送回瀏覽器。該HTML可以加載CSS和JavaScript,但是在Ruby程序完成後運行 - 根據瀏覽器的不同,可能根本無法運行。您如何在視圖中使用所選項目的名稱取決於您使用的是什麼。
如果你將它存儲在數據庫的某個地方,那麼你應該開始在Ruby中使用它。例如,如果您的@document
具有selected_informations
屬性,則可以在頁面的其餘部分使用該屬性,並將其傳遞到form.select
以在頁面中預先選擇它。 The Rails Guides documentation has more info on this。
如果您沒有將它存儲在數據庫中,那麼只要它發生變化,您就可以使用JavaScript獲取您的盒子的值。以下是一些示例代碼,只要<select>
框被更改,就會將所選項的名稱打印到JavaScript控制檯。我已將它包含在<script>
標記中,以便您可以直接將其放到您的視圖中以進行測試,但是如果您將其用於項目,則應將其放入專用的JavaScript文件中。需要注意的
<script>
$('select').on('change', function(ev) {
var selected_item = $(ev.currentTarget).val();
console.log("Your select value is " + selected_item);
});
</script>
的最後一件事是,現有的form.select
標籤設置調用的方法submit()
每當它的價值得到改變。 submit
只是一個名字,所以功能可能做任何事......但我猜想它是提交表單,每當一個項目被選中。這會向Rails服務器發送請求並刷新頁面,因此請注意 - 如果您使用change
上的事件偵聽器來更新當前頁面,則不會在新的刷新頁面上看到這些更改(並且應該使用而不是服務器端解決方案)。
謝謝你的解釋。但是示例代碼不適用於我。它根本不會改變任何東西。 – Ananas
示例代碼不會更改您的頁面;它會把東西打印到JavaScript控制檯,所以你可以看到一個獲得價值的例子。這裏是[Chrome](https://developer.chrome.com/devtools/docs/console)和[Firefox](https://developer.mozilla.org/en/docs/Tools/Web_Console)的說明。 –
太棒了我懂了!但是在我的視圖中沒有任何簡單的方法直接打印選定的值? – Ananas