我正在使用rails 3.1和资产管道(ruby 1.9.2).
尝试提供js.erb具有utf-8编码字符串的javascript 文件时出现以下错误
invalid byte sequence in US-ASCII
Run Code Online (Sandbox Code Playgroud)
我已经Encoding.default_external = "UTF-8"在我的environment.rb文件中设置了.如何让资产管道使用不同的编码?
编辑
当我在文件外部生成utf-8字符时(此时通过从DB查询),只会显示错误.如果我添加,错误消失了
<% "?" %>
Run Code Online (Sandbox Code Playgroud)
到文件的顶部.我猜这里有某种编码猜测,但如果没有那种hacky解决方案,我该如何避免呢?
我想使用css 将样式应用于所有类<p>和<input>元素numeric.
是否有可能巩固这一点,以便我只写一次"数字"?
p.numeric,input.numeric {
float: right;
}
Run Code Online (Sandbox Code Playgroud)
我也在使用sass,所以如果在CSS中不可能,那么可以添加sass吗?
rails 3.1中的force_ssl函数是硬编码的,以忽略开发环境,但不进行测试.这给了我(minitest)测试中的重定向错误.解决方案是设置我的测试服务器以支持ssl(如果是这样,如何?).如果没有,我应该修补force_ssl来忽略测试中的请求吗?
def force_ssl(options = {})
host = options.delete(:host)
before_filter(options) do
if !request.ssl? && !Rails.env.development?
redirect_options = {:protocol => 'https://', :status => :moved_permanently}
redirect_options.merge!(:host => host) if host
flash.keep
redirect_to redirect_options
end
end
end
Run Code Online (Sandbox Code Playgroud)
编辑找到这个链,这证实了其他人认为这是一个问题,但看起来还没有一个承诺修复:https://github.com/rails/rails/pull/2630
我有一个map(),我想传递两个参数:
示例代码:
{
values.map((workflow, totalWorkflow()) => {
return <WorkflowSingle key={ workflow } workflow={ workflow } />
})
}Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误: SyntaxError: Assigning to rvalue
即使我重新启动开发服务器,也不会重新生成我的js.erb文件.有没有办法让我每次重新启动服务器时强制资产管道重新生成所有的javascript资产?
如果我更改了实际的.js.erb源文件,那么它会重新编译,但代码从数据库中提取,读取可能在服务器重新启动之间更改的种子数据.
我有一个使用 AJAX 提交的表单(只有一个文本区域),以允许用户保存有关页面的注释。表单始终在页面上保持可见,您可以不断单击保存以不断更新笔记。
在 safari(但不是 chrome 或 FF)中,如果您开始在表单中输入并点击重新加载,浏览器会提示您“是否确定要重新加载,您有未保存的更改”类型对话框。我的问题是,如果您保存笔记,然后点击重新加载而不对文本区域进行任何进一步更改,该对话框也会弹出。javascript 中有什么方法可以让我将表单标记为已提交 // 未更改,以便 safari 知道不显示提示?
是否有可能在clojure中定义两个递归调用的函数?例如,这对:
(defn a [x]
(if (= 0 x) 0 (b (dec x))))
(defn b [x]
(if (= 0 x) 0 (a (dec x))))
Run Code Online (Sandbox Code Playgroud)
编译失败:
Unable to resolve symbol: b in this context
Run Code Online (Sandbox Code Playgroud)
因为我没有定义b何时尝试调用它a.
例如,在红宝石中这很好用:
def a(x)
x == 0 ? x : b(x-1)
end
def b(x)
x == 0 ? x : a(x-1)
end
Run Code Online (Sandbox Code Playgroud) 我想设置一些has_many,:通过使用fixture来测试rails 3.1中的对象.
如果您查看关联的文档作为示例,我想知道如何将程序集分配给部件.我发现这样做的唯一方法是在它自己的文件中显式创建清单对象,但是如果我对该模型的默认值感到满意,而我想要指定的是部件/汇编ID,那么就是直接做的方法?
我想要的东西:
my_assembly:
parts: my_first_part, my_second_part
Run Code Online (Sandbox Code Playgroud)
如果您执行HABTM,则此方法有效,但如果您具有显式连接模型,则无效.
我希望能够以开发环境中的任何用户身份登录,而不必关心我植入的密码。是否有某种方法可以将 Devise 配置为接受特定环境中的任何密码?
我想写一个clojure函数,它在一个编码中接受一个字符串并将其转换为另一个.iconv库可以做到这一点.
例如,让我们看看角色"è".在ISO-8859-1(http://www.ascii-code.com/)中,这e8是十六进制.在UTF-8(http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%C3%A8&mode=char)中,它是c3 a8.
所以假设我们有iso.txt,其中包含我们的字母和EOL:
$ hexdump iso.txt
0000000 e8 0a
0000002
Run Code Online (Sandbox Code Playgroud)
现在我们可以将它转换为UTF-8,如下所示:
$ iconv -f ISO-8859-1 -t UTF-8 iso.txt | hexdump
0000000 c3 a8 0a
0000003
Run Code Online (Sandbox Code Playgroud)
我该如何在clojure中写出相同的东西?我很高兴使用任何外部库,但我不知道我会去哪里找到它们.环顾四周,我无法弄清楚如何在JVM上使用libiconv本身,但可能还有另一种选择吗?
编辑
在评论中阅读Alex的链接之后,这非常简单而且很酷:
user> (new String (byte-array 2 (map unchecked-byte [0xc3 0xa8])) "UTF-8")
"è"
user> (new String (byte-array 1 [(unchecked-byte 0xe8)]) "ISO-8859-1")
"è"
Run Code Online (Sandbox Code Playgroud)