status是一個下拉選單,如果它是一個功能,它的值是(新、開始、完成);如果它是一個bug,它的值是(新、開始和解決)。我不知道如何才能做到這一點
。模型
Class Task
enum typeOf: %i[feature bug]
enum status_is: %i[New started completed resolved]
end
erb.html
<%= form_for :task, url: project_tasks_path, :html => {:multipart => true, :cla
<%= f.hidden_field :project %>
Title: <%=f.text_field :title, class:"form-control" %><br>
Description: <%=f.text_field :description, class:"form-control"%><br>
<標簽 for="deadline">Deadline< /label> <輸入type="datetime-local" id="deadline"
name="截止日期" ><br>
Screen Shot: <%=f.file_field :screen_shot, multiple: true, class:"form-control" %>
<div class="field">
<%= f.label :typeOf, class:"form-control"%><br />
<%= f.select(:typeOf, Task.typeOfs.key.map {|role| [role.titleize,role]}) %>
</div>
<div class="field"/span>>
<%= f.label :status_is, class:"form-control"%><br />
<%= f.select(:status_is, Task.status_is.key.map {|role| [role.titleize,role]}) %>
</div>
<%= f.submit "Add" %>
<%end %>
uj5u.com熱心網友回復:
我將使用兩個獨立的選擇框,每個選擇框都有預期的情況:
<div class="field"/span> data-target="bug"/span>>
<%= f.label :status_is, class:"form-control"%><br />
<%= f.select(:status_is, (Task.status_is.keys - ['completed']).map {|role| [role.titleize,role]}) %> //span>
</div>
<div class="field" data-target="feature">
<%= f.label :status_is, class:"form-control"%><br />
<%= f.select(:status_is, (Task.status_is.keys - ['resolved']).map {|role| [role.titleize,role]}) %> //span>
</div>
然后你用一個灑脫的javascript來切換它們的輸入/輸出:
function toggleSelects(){
var value = $('#task_typeOf')[0].value。
$('[data-target=bug]').toggle(value =='bug')。
$('[data-target=bug] select').attr('disable',value !=='bug')。
$('[data-target=feature]').toggle(value =='feature') 。
$('[data-target=feature] select').attr('disable', value !=='feature') 。
}
//每次任務型別改變時執行。
$('#task_typeOf')。 on('change', () => toggleSelects() )。)
//也可在檔案加載時執行
$(toggleSelects)。
當然,你可以使用不同的策略或包裝器來隱藏欄位和禁用選擇,但你必須做到這兩點(無論如何,一個隱藏的選擇將被提交)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307591.html
標籤:
