2016-06-28 57 views
0

我第一次使用showdown-rails gem,並且在出現時遇到了一些麻煩。我按照GitHub頁面的指示運行了gem的安裝,其中包括我的application.js文件,其中包含//= require showdown。我使用下面的代碼使用它在一個_form部分我wikis#edit/wikis#new頁:攤牌未出現在Rails應用程序中

<%= form_for(@wiki) do |f| %> 
    <%= f.label :title %><br> 
    <%= f.text_field :title, class: "form-control" %> 

    <%= f.label :body %><br> 
    <%= f.text_area :body, class: "form-control", style: "height: 250px", id: "wiki_body" %> 


    <% if current_user.admin? || current_user.premium? %> 
    <%= f.label :private, class: 'checkbox' do %> 
     <%= f.check_box :private %> Make Wiki Private 
    <% end %> 
    <% end %> 

    <% if @wiki.private? %> 
    <%= f.label "Add Collaborators", class: 'checkbox' %> 
    <div style="height: 80px; overflow: scroll; border: thin grey solid; padding-left: 10px"> 
     <% @users.each do |user| %> 
     <%= check_box_tag "wiki[user_ids][]", user.id, @wiki.users.include?(user) %> 
     <%= user.name %><br> 
     <% end %> 
    </div> 
    <% end %> 

    <script> 
    var converter = new showdown.Converter(); 
    $('#wiki_body').on('keyup', function() { 
     var mdown = $(this).val(); 
    $('#wiki_preview').html(converter.makeHtml(mdown)); 
    }); 
    </script> 

    <div class="well" style="margin-top: 20px"> 
    <p id="wiki_preview"></p> 
    </div> <!-- showdown well --> 

    <div class="text-center"> 
    <%= f.submit "Create Wiki", class: "btn-custom" %> 
    </div> <!-- text-center --> 
<% end %> 

顯示良好,但實際文本Showdown應該呈現永遠不會出現。這是我第一次使用寶石,所以我不確定哪裏出錯。任何人都可以在這裏指出我的錯誤?

回答

0

雖然問題有點老,但我遇到了同樣的問題,因爲還沒有答案,所以我想我會分享我的結果。

首先,不要直接在您的視圖中編寫JavaScript,但應使用assets/javascript子目錄下的相應文件,即assets/javascripts/wiki.js

其次,我遇到了rails無法正確加載導入的javascript與已安裝版本的問題。我的JavaScript控制檯上有Reference Error: showdown is not defined。奇怪的是,剛剛運行bundle update修復了這個問題。

三,我遇到過這個代碼有一些問題turbolinks,這是默認情況下由rails激活的。基本上說,你需要確保在turbolinks設置頁面後你的腳本會被加載。你可以通過你的函數之前插入$(document).on('turbolinks:load', function(),你的情況,確保這一點

$(document).on('turbolinks:load', function() { 
    var converter = new showdown.Converter(); 
    $('#wiki_body').on('keyup', function() { 
     var mdown = $(this).val(); 
    $('#wiki_preview').html(converter.makeHtml(mdown)); 
    }); 
} 

您可以檢查是否turbolinks在您views/layouts/application.html.erb文件中被激活,如果turbolinks被激活,你就會有一個行說<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload'%>

相關問題