2016-08-02 19 views
-1

Ich habe eine Mischung aus Ruby-Code Schienen Ich habe ein Formular mit einer Auswahl-Option, die ich will ein erforderliches sein, und ich will, validieren. Wenn der Benutzer nichts auswählt, möchte ich mit einer Fehlermeldung validieren. Allerdings versuche ich Vergangenheit Code aus dem Internet zu kopieren, ich bin neu bei Rubin Schienen und ich habe noch keine Fehlermeldung. ich auch überprüfen, ob i 'erforderlich' verwenden oder wenn i 'validates_presence_of' nicht verwendet Unterschied machen, weil es ein Formular ist (glaube ich)Wählen Sie die Option erforderlich Ruby-Rails

test_filteR_form.rb

class TestFilterForm < ApplicationForm 

    attribute :model,     String 
    validates_presence_of :model 
end 

.html.erb

<%= f.input :fill_form_error_message,:as => :hidden, :input_html => { :value =>I18n.t('test.fill_form_error') } %> 
    <%= f.input :model, label: I18n.t('test.filters.model'), autofocus: true, input_html: {class: 'input-xlarge chosen-select' }, collection: TestType.options_for_select, include_blank: true %> 

„/>

Controller

def paginate 
    @test_form = TestForm.new(params) 
    unless @test_form.valid? 
     @model = params[:test_filter_form][:model] 
     @h_model = @model.pluralize + 'H' 
     @history, _query, @test_fields = TestQueryService.search!(params) 

     session[:test_query] = _query 
     session[:test_klass] = @model 
    else 
     format.json { render :json => { :error => @test_form.errors.full_messages }, :status => 422 } 
    end 

js.coffee

$contentDiv.on 'ajax:error', 'form[data-value]', (event, xhr, status, error) -> 
    data = $.parseJSON(xhr.responseText) 
    $result = $(@).parents('tr').find('[data-result]') 
    controller.resultUpdateError xhr.status, $result.data('result'), data, $(@) 
    # Hide row loading spinner 
    $(@).parents('tr').find('span[role="result_update_spinner"]').hide() 
    # Hide saved form 
    $(@).parents('tr').find('.saved_form').hide() 


    resultUpdated: (result, data, $form) -> 
    if data.flash != undefined 
     # Sets a sucess message on page top 
     flash data.flash.type, data.flash.message 

    # Sets a success message on row 
    $fieldForm = $form.parents('tr').find(".messages") 
    $fieldForm.find('.controls').empty() 
    $fieldForm.find('.control-group .controls').css('color', 'green').append @_inlineMessage("Gravado com sucesso") 

    # Hide success message after some time 
    setTimeout ((self) -> 
     -> 
     $fieldForm.find('.control-group .controls').empty() 
     return 
    )(this), 4000 

Antwort

0

Da Sie dynamisch auf das Auswahlfeld erstellt werden, dann muss es einen Standardwert ausgewählt, die nicht gleich Null ist, so wird es keine Änderung Auswahl wie diese manuell erstellen können Sie gesehen:

<div class="form-group"> 
      <%= f.label :select_user_country %><br/> 
      <select class="form-control select2" name="user[country_id]"> 
      <option value="" selected disabled>Select a Country</option> 
      <%@countries.each do |country|%> 
       <option value="<%=country.id%>"><%=country.name%></option> 
      <%end%> 
      </select> 
     </div> 
Verwandte Themen