2015-04-21 13 views
0

У меня есть рельсы form new.html.erb. Когда я перехожу к этой ссылке вручную, я получаю 200 OK на запрос получения.Rails новая форма создания новой формы возвращается с кодом 304 http вместо 200

Но когда я прихожу на эту страницу с другой страницы, скажем, моя корневая страница, я получаю 304-не измененный код состояния http, из-за чего я думаю, что часть моего кода document.ready не выполняется должным образом.

Вот мой new.html.erb файл

<div class="ui padded page grid"> 

    <div class="ui eight wide column"> 

    <%=form_for @listing, :html=> { class:'ui form centered teal segment'},remote: true do |f|%> 
    <%= hidden_field_tag :authenticity_token, form_authenticity_token -%> 
    <a class="ui teal ribbon label"> 
     New Listing</a> 
     <h2 class="ui header"> 
     <i class="settings icon"></i> 
     <div class="content"> 
      Create New Listing 
      <div class="sub header">Manage your preferences</div> 
     </div> 
     </h2> 

     <div class="required field"> 
     <label>Title</label> 
     <%=f.text_field :title,placeholder:'Title of the listing'%> 
     </div> 
     <div class="two fields"> 

     <div class="required field"> 
      <label>Pet</label> 
      <%= f.select(:pet_type,options_for_select([['Dog',1,{class:'item'}],['Cat',2,{class:'item'}],['Bird',3,{class:'item'}]]),{prompt:'Pet'},class:'ui dropdown pet_type')%> 
     </div> 
     <div class="field"> 
      <label>Breed</label> 
      <%= f.select(:breed_type,options_for_select(Breed.all.collect{|x| [x.name,x.id,class:'item']}),{prompt:'Breed'},class:'ui dropdown disabled breed_type')%> 
     </div> 



     </div> 
     <div class="two fields"> 
     <div class="required field"> 
      <label>Gender</label> 
      <%= f.select(:gender,options_for_select([['Male',1,{class:'item'}],['Female',2,{class:'item'}]]),{prompt:'Gender'},class:'ui dropdown gender')%> 
     </div> 
     <div class="field"> 
      <label>State</label> 
      <select class="ui search dropdown"> 
      <option value="">State</option> 
      <option value="AL">Alabama</option> 
      <option value="AL">Alabama</option> 
      <option value="AK">Alaska</option> 
      <option value="AZ">Arizona</option> 
      <option value="AR">Arkansas</option> 
      <option value="CA">California</option> 
      <option value="CO">Colorado</option> 
      <option value="CT">Connecticut</option> 
      <option value="DE">Delaware</option> 
      <option value="DC">District Of Columbia</option> 
      <option value="FL">Florida</option> 
      <option value="GA">Georgia</option> 
      <option value="HI">Hawaii</option> 
      <option value="ID">Idaho</option> 
      <option value="IL">Illinois</option> 
      <option value="IN">Indiana</option> 
      <option value="IA">Iowa</option> 
      <option value="KS">Kansas</option> 
      <option value="KY">Kentucky</option> 
      <option value="LA">Louisiana</option> 
      <option value="ME">Maine</option> 
      <option value="MD">Maryland</option> 
      <option value="MA">Massachusetts</option> 
      <option value="MI">Michigan</option> 
      <option value="MN">Minnesota</option> 
      <option value="MS">Mississippi</option> 
      <option value="MO">Missouri</option> 
      <option value="MT">Montana</option> 
      <option value="NE">Nebraska</option> 
      <option value="NV">Nevada</option> 
      <option value="NH">New Hampshire</option> 
      <option value="NJ">New Jersey</option> 
      <option value="NM">New Mexico</option> 
      <option value="NY">New York</option> 
      <option value="NC">North Carolina</option> 
      <option value="ND">North Dakota</option> 
      <option value="OH">Ohio</option> 
      <option value="OK">Oklahoma</option> 
      <option value="OR">Oregon</option> 
      <option value="PA">Pennsylvania</option> 
      <option value="RI">Rhode Island</option> 
      <option value="SC">South Carolina</option> 
      <option value="SD">South Dakota</option> 
      <option value="TN">Tennessee</option> 
      <option value="TX">Texas</option> 
      <option value="UT">Utah</option> 
      <option value="VT">Vermont</option> 
      <option value="VA">Virginia</option> 
      <option value="WA">Washington</option> 
      <option value="WV">West Virginia</option> 
      <option value="WI">Wisconsin</option> 
      <option value="WY">Wyoming</option> 
      </select> 
     </div> 

     </div> 
     <div class="required field"> 
     <label>Tell everyone in short about your pet</label> 
     <%=f.text_area :love_for_pets%> 
     </div> 
     <h4 class="ui dividing header">Additional Info</h4> 
     <div class="two fields"> 
     <div class="required field"> 
      <label>Price</label> 
      <div class="ui icon input"> 
      <%=f.text_field :price,placeholder:"Price"%> 
      <i class="user icon"></i> 
      </div> 
     </div> 
     <div class="field"> 
      <label>Phone Number</label> 
      <div class="ui icon input"> 
      <%=f.text_field :phone_no,placeholder:"Phone_no"%> 
      <i class="call icon"></i> 
      </div> 
     </div> 



</div> 



<div class="ui hidden divider"></div> 
<div class="field"> 
    <div class="ui checkbox"> 
    <input type="checkbox" name="hot-deals"> 
    <label>I agree to the <a href="#">Terms of Service</a>.</label> 
    </div> 
</div> 

<div class="ui error message"> 
    <div class="header">We noticed some issues</div> 
</div> 
<%=f.submit 'Register',class:'ui button'%> 
<div class="ui error message"></div> 
<%end%> 


</div> 

<div class="ui eight wide column"> 

    <div class="ui teal segment dropzone" id="media-dropzone"> 
    <!--p class="dz-default dz-message"><span>Drop files here to upload</span> 
    </p--> 
    <h2 class="ui center aligned icon header dz-message"> 
    <i class="upload icon"></i> 
    <div class="content"> 
     Upload File 
     <div class="sub header">Drop your images here</div> 
    </div> 
    </h2> 
</div> 
</div> 


</div> 

Из-за этого мой Dropzone не получает initialized.Also семантического Ui выпадающего меню не отображаются.

Я предполагаю, что причиной этого является то, что document.ready не попадает, из-за чего инициализация элементов dom не происходит.

/listing.js.erb/

$(document).ready(function() 
{ 

    /*Dropzone.options.mediaDropzone=false;*/ 
    Dropzone.autoDiscover = false; 

    mediaDropzone=new Dropzone('div#media-dropzone', 
    { 
     url:"/listings/media", 
     headers: 
     { 
     'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') 
     }, 
     autoProcessQueue:false, 
     addRemoveLinks:true, 
     parallelUploads: 10 
    }); 
    mediaDropzone.on("success",function(file,responseText) 
    { 
     console.log(responseText.file_name.url); 
     console.log(responseText); 
    }); 


}); 

/ListingController/

class ListingsController < ApplicationController 
    def new 
     @breeds=Breed.all 
     session[:listing].destroy 
     @listing=Listing.new 
    end 

    def create 
     @listing=Listing.new(listing_params) 
     if @listing.save 
      session[:listing][email protected] 
      respond_to do |format| 
       format.js 
      end 
     end 
    end 
    def media 
     @listing=Listing.find(session[:listing]) 
     puts params 
     @photo=Photo.new(file_name:params[:file],listing:@listing) 
     if @photo.save! 
      respond_to do |format| 
       format.json{render :json=>@photo} 

      end 
     end 

    end 


    private 
    def listing_params 
     params.require(:listing).permit! 
    end 

end 

/routes.rb/

Rails.application.routes.draw do 


    root 'prime_petz#home' 

    get 'prime_petz/home' 

    get 'prime_petz/about' 

    get 'prime_petz/contact' 

    post 'listings/media' 

    resources :listings 
    resources :prime_petz 
end 
+0

Мы пропускаем ** маршруты ** и ** контроллер **, вся информация о кодах http-статусов обрабатывается там, мы не можем реально помочь с этой информацией. –

+0

извините, добавили их сейчас –

ответ

0

код 304 статуса не означает, есть ошибка. Это означает, что файлы активов совпадают с файлами браузеров. In Rails 3.2.3 server I get error 304 Not Modified (5ms) http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

Похоже, что это проблема с turbolinks.

+0

Это действительно была проблема с турбо-ссылками и была решена, когда я удалил зависимость от турбин в моем файле application.js. Спасибо, что указали это. –

0

Turbolinks в Rails отключает document.ready() при навигации внутри приложения. Либо вам придется отключить его в опции ссылки:

<%= link_to('foo', @foo, 'data-no-turbolink' => true) %> 

Или вам придется установить turbolinks Jquery перл:

https://github.com/kossnocorp/jquery.turbolinks

+0

Хорошо, теперь я пытаюсь использовать ваш метод, давайте посмотрим, работает ли он –

+0

Jorge de los santos, он не работает.Document.ready не получает удар –

+0

Метод ссылки будет работать только в том случае, если вы нажмете напрямую URL. Если вы проходите через контроллер, вам понадобится камень turbolinks-jquery. – tebayoso