2017-08-07 523 views
0

我已經從BS3移到Materialise,所以我正在經歷並更改我的表單 - 我有4個表單非常相似,但是當我將第一個表單切換爲不再提交時。該按鈕甚至不像點擊,但我綁定了一個通用的'logMe'功能,並且確實如此。Rails Submit按鈕不提交

我的路線是完全一樣的兩個,新形式

<div class="row"> 
    <%= form_with(model: @statement, local: true) do |form| %> 
    <% if @statement.errors.any? %> 
     <% @statement.errors.full_messages.each do |message| %> 
     <script> 
     $(function() { 
      Materialize.toast("<%= message %>", 3000); 
     }); 
     </script> 
     <% end %> 
    <% end %> 

    <div class="row"> 
     <div class="input-field col s12"> 
      <i class="material-icons prefix">account_circle</i> 
      <!--<label for="icon_prefix">SoW Type:</label>--> 
      <%= form.label :statement_type, 'Type:' %> 
      <%= form.text_field :statement_type, :id => "disabled", :value => (params[:statement_type]), readonly: true, :disabled => true %> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="input-field col s6"> 
     <i class="material-icons prefix">contacts</i> 
     <%= form.label :name, "Name:" %> 
     <%= form.text_field :name, :id => 'required_field1' %> 
     </div> 
     <div class="input-field col s6"> 
     <i class="material-icons prefix">contacts</i> 
     <%= form.label :cost, "Cost:" %> 
     <%= form.text_field :cost, :id => 'required_field2' %> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="input-field col s6"> 
     <i class="material-icons prefix">date_range</i> 
     <%= form.label :start_date, "Start Date" %> 
     <%= form.text_field :start_date, :class => 'datepicker', "data-provide" => 'datepicker', :id => 'required_field4', :placeholder => "YYYY-MM-DD" %> 
     </div> 
     <div class="input-field col s6"> 
     <i class="material-icons prefix">date_range</i> 
     <%= form.label :end_date, "End Date" %> 
     <%= form.text_field :end_date, :class => 'datepicker', "data-provide" => 'datepicker', :id => 'required_field5', :placeholder => "YYYY-MM-DD" %> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="input-field col s12"> 
     <i class="material-icons prefix">perm_contact_calendar</i> 
     <%= form.collection_select(:client_id, current_user.clients.order(:name),:id,:name, :class => "browser-default", :prompt => "Choose a client") %> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col s12"> 
     <%= form.submit 'Submit', :class =>'btn btn-default', :id => 'register', :onclick => "testMe()"%>  
     </div> 
    </div> 

    <% end %> 
</div> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('select').material_select(); 
    validate(); 
    $('#required_field1, #required_field2').change(validate); 
}); 

function testMe(){ 
    console.log('hi') 
} 

function validate(){ 
    if ($('#required_field1').val().length > 0 && 
     $('#required_field2').val().length > 0 
    ){ 
     $("input[type=submit]").prop("disabled", false); 
    } 
    else { 
     $("input[type=submit]").prop("disabled", true); 
    } 
} 
var from_$input = $('#required_field4').pickadate({ 
    selectMonths: true, // Creates a dropdown to control month 
    selectYears: 15, // Creates a dropdown of 15 years to control year, 
    today: 'Today', 
    clear: 'Clear', 
    close: 'Ok', 
    closeOnSelect: true, 
    format: 'yyyy-mm-dd' 
    }), 
    from_picker = from_$input.pickadate('picker') 

var to_$input = $('#required_field5').pickadate({ 
    selectMonths: true, // Creates a dropdown to control month 
    selectYears: 15, // Creates a dropdown of 15 years to control year, 
    clear: 'Clear', 
    close: 'Ok', 
    closeOnSelect: true, 
    format: 'yyyy-mm-dd' 
    }), 
    to_picker = to_$input.pickadate('picker') 


// Check if there’s a 「from」 or 「to」 date to start with. 
if (from_picker.get('value')) { 
    to_picker.set('min', from_picker.get('select')) 
} 
if (to_picker.get('value')) { 
    from_picker.set('max', to_picker.get('select')) 
} 

// When something is selected, update the 「from」 and 「to」 limits. 
from_picker.on('set', function(event) { 
    if (event.select) { 
    to_picker.set('min', from_picker.get('select'))  
    } 
    else if ('clear' in event) { 
    to_picker.set('min', false) 
    } 
}) 
to_picker.on('set', function(event) { 
    if (event.select) { 
    from_picker.set('max', to_picker.get('select')) 
    } 
    else if ('clear' in event) { 
    from_picker.set('max', false) 
    } 
}) 

</script> 

我已經試過註釋掉所有的JS,它切換到一個普通按鈕,掉毛,並使用Rubocop但我不看到任何東西。我瀏覽了HTML以確保按鈕位於表單內部,並且是。

這不是我過渡的第一個表格,但是我遇到的第一個問題。

(我假設只認爲是相關的,因爲它不是在這一點上讓控制器)。

爲安全起見 - 呈現形式的看法是

<div class="row"> 
     <div class="col s12"><span class="flow-text" style="text-align: center;"><h1>New <%= params[:statement_type] %></h1></span></div> 
</div> 


<% if params[:statement_type] == 'Proposal' %> 
    <%= render 'proposal_form' %> 
<% elsif params[:statement_type] == 'Concept' %> 
    <%= render 'concept_form' %> 
<% elsif params[:statement_type] == 'SoW' %> 
    <%= render 'sow_form' %> 
<% elsif params[:statement_type] == 'Misc' %> 
    <%= render 'misc_form' %> 
<% end %> 

<%= link_to 'Back', statements_path %> 

+動物遺傳資源狀況提案工作。 SoW沒有。

回答

0

我的問題最終不是基於HTML的,而是最終的Rails。

我的靜態元素由param填充導致了問題。

<%= f.text_field :statement_type, :id => "disabled", :value => (params[:statement_type]), readonly: true %> 

通過刪除id: disabled它解決了提交按鈕無法提交。不幸的是,它也使MaterializeCSS回到突出顯示該字段,當我選擇它,但我的問題是提交按鈕不起作用。