【问题标题】:How and when does rails load a gem library?rails 如何以及何时加载 gem 库?
【发布时间】:2014-11-13 12:12:13
【问题描述】:

我安装了一个 gem:http://toopay.github.io/bootstrap-markdown/

这个库应该把一个 textarea 元素变成一个风格化的 mardown 编辑器。

为此,我使用了以下代码:

 <div class="well col-md-10 col-md-offset-1">
 <%= form_for(:post, :url => {:action => 'create'}) do |f| %>
    <%= f.text_field(:title, class: 'form-control')%>
    <%= f.text_field(:description, class: 'form-control')%>
    <%= f.text_area(:content, rows: 15, "data-provide" => "markdown")%>
    <%= f.button "Submit", type: 'submit', class: 'btn col-md-4 col-md-offset-4 btn-large btn-success'%>
<% end %>
</div>

最初我将这段代码放在我的根页面上,它运行良好。 然后我创建了一个新控制器并将其移动到不同的视图。我通过在浏览器中手动输入 url 来访问该视图:localhost:3000/controller/view 并且页面加载完美。

这里的结果:

但是,当我通过不同页面上的链接访问该页面时,表单没有被样式化。

结果:

奇怪的是,如果我重新加载页面,它会应用所有更改。

我做了一个临时的丑陋黑客,每次访问都会重新加载页面:

$(document).ready(function(){    
    //Check if the current URL contains '#'
    if(document.URL.indexOf("#")==-1){
        // Set the URL to whatever it was plus "#".
        url = document.URL+"#";
        location = "#";

        //Reload the page
        location.reload(true);
    }
});

但是对于发生的事情必须有一个体面的解释。

我浏览了库本身并添加了一些 console.log 语句。 似乎该库已在主页上加载并初始化,但是当我单击该链接时,它不再运行任何东西。

我真的很难理解这是 Rails 问题还是库问题。

【问题讨论】:

  • 按 F5 会发生什么?该网站是否正确显示?这是rails开发模式下的一个bug,...
  • 是的,如果我按 F5,它会正确显示!我已经在这上面花费了超过 2 天。

标签: ruby-on-rails gem javascript rails-routing


【解决方案1】:

您对 Turbolinks 有疑问。首先,移除 data-provide 属性来自己初始化输入并添加一个类,比如markdown-editor

<%= f.text_area(:content, rows: 15, class: "markdown-editor")%>

其次,添加一个Javascript初始化器:

$(document).on('ready page:load', function(){
  $(".markdown-editor").markdown()
});

然后它将在每次页面加载时初始化。

【讨论】:

  • 成功了!我一直在尝试这样做很长时间,因为我不知道如何手动调用降价初始化程序。我真的不明白这个函数是什么意思:stackoverflow.com/questions/26907794/… 并且无法破译库是如何工作的
  • 非常感谢您,我希望我能给您更多的回报,而不是接受答案!你太棒了!我花了 10 多个小时试图弄清楚这一点!
  • 我希望我知道什么是 turbolinks。我一直在关注的 turorials 发现它们更先进,我不应该担心它们。
  • 是的,这是你学习 Rails 时最常遇到的问题 :)
猜你喜欢
  • 1970-01-01
  • 2011-12-19
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多