小编Nat*_*ong的帖子

如何跳过Devise的SessionsController的before_filter?

我有一个before_filter在我的ApplicationController; 也就是说,对于我项目中的每个控制器.

我如何skip_before_filter为Devise的SessionsController创作行动?

ruby-on-rails before-filter devise

20
推荐指数
3
解决办法
2万
查看次数

如何防止初始化程序配置在开发模式中丢失?

我正在使用一个使用引擎的Rails应用程序.我正在使用初始化程序来配置我的引擎的一个控制器,以便它在主机应用程序中触发一个动作.代码看起来像这样:

# config/initializers/my_engine.rb
MyEngine::SomeController.after_filter proc {
  # Do something in the host app
}, :only => :update
Run Code Online (Sandbox Code Playgroud)

这在生产中工作正常,但在开发模式下,proc仅在第一个请求时调用.这是因为类被重新加载并且此配置丢失,因为它存储在类变量中.(例如,MyEngine::SomeController从它所在的文件重新加载,并且由于after_filter未在那里声明,因此不会重新加载它.)

一些Rails背景

在开发模式下,Rails使用以下加载策略:

  • app如果您正在主动更改目录,则会在每个请求上重新加载目录中的代码.
  • 当应用程序启动时,lib目录中的代码以及config/initializer文件将加载一次.

初始化程序文件通常用于配置gem.在过去,gems主要在lib目录中有代码,因此运行一次配置就足够了.

引擎如何改变事物

但是,Rails引擎在app目录中有代码:控制器,模型等.这些文件在每个请求的开发模式下重新加载.因此,上面的示例配置丢失了.

输入to_prepare

Rails config.to_prepare专门解决了这个问题:它在生产中运行一次,在开发中的每个请求上运行一次.

例如,我们在application.rb中有这个,它工作正常:

config.to_prepare do
  # set up class variables (after_filters, etc)
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须将所有引擎的配置都放入其中application.rb,这就会破坏config/initializers保持组织有序性的观点.

因此,对于我的引擎app目录中的任何类配置,我想将该代码放在文件下config/initializers.

这是我的问题.

  • 我不清楚如何config进入初始化文件中的范围.我在想它会Rails.application.config.是对的吗?
  • 我可以添加多个to_prepare块吗?我担心多次调用它会覆盖以前的块.

更新

正如@Frederick Cheung所提到的,Rails.application.config.to_prepare它可以在config/initializer …

ruby-on-rails ruby-on-rails-3.1

19
推荐指数
1
解决办法
4133
查看次数

读取文件并获取字符串数组

我想读取一个文件并找回Strings 的向量.以下功能有效,但有更简洁或惯用的方式吗?

use std::fs::File;
use std::io::Read;

fn lines_from_file(filename: &str) -> Vec<String> {
    let mut file = match File::open(filename) {
        Ok(file) => file,
        Err(_) => panic!("no such file"),
    };
    let mut file_contents = String::new();
    file.read_to_string(&mut file_contents)
        .ok()
        .expect("failed to read!");
    let lines: Vec<String> = file_contents.split("\n")
        .map(|s: &str| s.to_string())
        .collect();
    lines
}
Run Code Online (Sandbox Code Playgroud)

有些事情对我来说似乎不是最理想的:

  • 两个单独的错误检查用于读取文件.
  • 将整个文件读取到a String,将被丢弃.如果我只想要前N行,这将特别浪费.
  • 制作一条&str将被丢弃的每行,而不是以某种方式直接从文件到String每行.

如何改进?

idiomatic rust

19
推荐指数
2
解决办法
7935
查看次数

Ruby on Rails:=>符号是什么意思?

我正在通过Head First Rails工作,我一直在看=>.它在路线中:

map.connect '/marmots/new', controller=>'marmots', :action=>'new'

这是在渲染部分:

render :partial=>"new_marmot"

它是链接的选项:

<%= link_to 'Destroy', marmot, :confirm=>'Are you sure?', :method=>:delete %>

基本上,=>似乎意味着"平等",但如果是这样,为什么不使用等号呢?它更像是"发送给谁?"

你怎么发音=>你明白这是什么意思?我可以在不知情的情况下过去,但它让我烦恼.

ruby-on-rails

18
推荐指数
2
解决办法
6243
查看次数

PHP有什么像Ruby的irb吗?

如果我想在Ruby或Javascript中尝试新的东西,我喜欢从irbFirebug中的JS控制台获得即时反馈.

PHP有什么类似的吗?

更新

正如@bernie指出的那样,这些工具被称为REPL - "Read-eval-print loop"

php

18
推荐指数
2
解决办法
3706
查看次数

我可以在页面中重复使用相同的SVG并应用不同的CSS吗?

我有一个SVG文件,我想在网页中使用.我希望图像多次出现,但要为每个图像应用不同的CSS样式.

这可能吗?

澄清

当我说"应用不同的CSS样式"时,我的意思是我想要设置SVG内容的样式(笔触,颜色,半径等),而不仅仅是一个<img>或者某个东西的宽度.

另外,我不认为"复制并粘贴SVG内容"是"重新使用"它.我想创建一个类似的文件logo.svg,并从HTML中引用它.

html css svg

18
推荐指数
2
解决办法
1万
查看次数

CSS清除如何真正起作用?

我有一个<div>我想成为一条线的人.根据W3Schools,这个规则:

div.foo {
  clear: both;
}
Run Code Online (Sandbox Code Playgroud)

......应该是这样的:

"左侧或右侧都不允许浮动元素."

但是,如果我<div>向左浮动两个元素,并将上面的规则应用于第一个元素,则第二个元素不会移动.

另一方面,如果我申请"clear: left"第二个<div>,它会向下移动到下一行.这是我的正常方法,但我不明白为什么我必须这样做.

上面的W3Schools描述是不是很清楚,还是我错过了什么?清算规则是否只能移动应用它的元素?

回答

感谢Michael S和John D的好解释.沃伦指出了CSS2规范,这就是我找到这个答案的地方(强调我的):

此属性指示元素框的哪些边可能不与较早的浮动框相邻 .

所以:clear只影响应用它的元素的位置,相对于代码前面出现的元素.

令人失望的是,我不能告诉我<div>让其他div移动,但他们是休息.:)

css layout

17
推荐指数
1
解决办法
4506
查看次数

jQuery Accordion:IE动画问题

更新

我将其作为社区维基,原因有三:

  • 我不觉得我得到了明确的答案,但是
  • 我很久以前就不再需要答案,因为我推出了自己的手风琴功能
  • 这个问题得到了很多观点,很明显很多人仍然感兴趣

因此,如果有人想要更改/澄清这个问题并使其成为权威指南,请成为我的客人.


我正在使用jQuery的手风琴UI元素处理页面.我在那个例子上建模我的HTML,除了在<li>元素内部,我有一些无序的链接列表.像这样:

  $(document).ready(function() {
     $(".ui-accordion-container").accordion(
        {active: "a.default", alwaysOpen: true, autoHeight: false}
     );
  });

  <ul class="ui-accordion-container">
  <li> <!-- Start accordion section -->
   <a href='#' class="accordion-label">A Group of Links</a>
   <ul class="linklist">
      <li><a href="http://example.com">Example Link</a></li>
      <li><a href="http://example.com">Example Link</a></li>
   </ul>

   <!--and of course there's another group -->
Run Code Online (Sandbox Code Playgroud)

问题:IE动画很臭

虽然IE7动画文档的示例手风琴菜单很好,但它有我的问题.具体来说,页面上的一个手风琴菜单急剧移动并且内容闪烁. 我知道这不是一个CSS问题,因为如果我不包含我的CSS文件会发生同样的事情.

页面上的另一个手风琴菜单会打开您单击的第一个部分,之后将不会打开它们中的任何一个.

这两个问题都是特定于IE的,如果我使用该选项,它们都会消失animated: false.但是我想保留默认slide动画,因为它可以帮助用户理解菜单正在做什么.

还有另外一种方法吗?

jquery accordion

17
推荐指数
4
解决办法
3万
查看次数

为什么页面锚点有时会错过?

在HTML页面上,链接如下:

<a href="#pagelocation">Location on Page</a>
Run Code Online (Sandbox Code Playgroud)

...应该导航到页面上的这个位置:

<a name="pagelocation">
Run Code Online (Sandbox Code Playgroud)

但根据我的经验,它有时会遗漏 - 尤其是从其他页面链接时(如<a href="somepage.html#pagelocation">).通过"未命中",我的意思是它滚动到页面上的错误位置 - 也许是关闭,也许不是.

通常,目标位置最终位于屏幕顶部.我知道如果锚点下面没有足够的空间将其滚动到屏幕顶部,这可能会失败.

为什么它会失败?它完全取决于布局吗?我该如何解决?

(我保持这种一般性,因为我想要一个全能的参考答案.)

更新1

感谢关于非显式图像大小的指针.但是在所有元素都有明确大小的页面上呢?(我现在正在处理一个.)

html anchor

17
推荐指数
3
解决办法
8602
查看次数

为什么Clojure语言使用这么多括号?

好像所有东西都需要用clojure中的括号括起来.即使是一个简单的问候世界!

(println "Hello world!")
Run Code Online (Sandbox Code Playgroud)

该语法决定有什么好处?

syntax clojure

16
推荐指数
3
解决办法
2194
查看次数