2017-10-13 61 views
0

如果用戶沒有打算選擇任何單選按鈕,我需要一種方式讓我的表單不被髮送。Rails需要一個集合中的單選按鈕

我想到的是,視圖和控制器內,而不是在模型(數據甚至不應該發送)

<%= form_tag("/bookings/new", method: "get") do %> 
    <% @flights.each do |flight| %> 
    <%= radio_button_tag :flight_id, flight.id %> 
    <% end %> 
    <%= submit_tag "book now" %> 
<% end %> 

編輯,以澄清
通常我願意做
<%= f.text_field :name, required: true %>
但是,因爲我有很多的單選按鈕,我只需要一個形式的工作,我不知道如何實現它

+0

你是什麼意思 「的數據甚至不應該發送」?如果您不希望提交表單(即前端和服務器之間沒有請求/響應循環),那麼您可能需要在前端使用JavaScript。 – jvillian

+0

你的意思是你想在前端進行驗證而不是在模型中進行驗證? – krishnar

+1

這個問題是更多的JavaScript相關的軌道相關。 Cf:https://stackoverflow.com/questions/1423777/how-can-i-check-whether-a-radio-button-is-selected-with-javascript –

回答

1

您可以在模型中設置驗證看到複選框的存在如果是碎石cript已禁用。這是一個更強大的方法。

validates :flight_id, :acceptance => true

文檔在這裏 - http://guides.rubyonrails.org/active_record_validations.html#acceptance

編輯

function validateCheckBox() { 
    var x = document.getElementById("flight_id").checked; 
    if(!x) {alert("Not checked")}   
} 

<%= submit_tag "book now" , :onclick => "validateCheckBox();" %> 
+0

正如我在我的帖子的第二行中寫的,我'd喜歡在視圖和控制器內,而不是在型號中 – Salomanuel

+1

當您談論視圖和控制器時,會立即轉化爲前端問題。使用javascript。請參閱編輯。 – arjun