小编Stu*_*art的帖子

javascript_include_tag Rails 4在生产中生成"/ javascripts /"而不是"/ assets"

我有一个Rails 4应用程序

<%= javascript_include_tag "modernizr", "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

在头上.在开发中,将呈现以下HTML,并加载modernizr:

<script data-turbolinks-track="true" src="/assets/modernizr.js?body=1"></script>
Run Code Online (Sandbox Code Playgroud)

在生产中,渲染了followign HTML,并且加载modernizr (未找到404):

<script data-turbolinks-track="true" src="/javascripts/modernizr.js"></script>
Run Code Online (Sandbox Code Playgroud)

在生产中,/assets/modernizr.js被发现并可浏览.

Rails文档说,javascript_include_tag应该产生

<script data-turbolinks-track="true" src="/assets/modernizr.js?body=1"></script>
Run Code Online (Sandbox Code Playgroud)

在生产中,我stylesheet_link_tag很好,链接到/assets/目录.

为什么javascript_include_tag链接/javascripts而不是/assets生产,我该如何解决?

ruby-on-rails asset-pipeline

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

求和型无限递归中左递归语法的解析

我正在尝试从ML 中的现代编译器实现为 Tiger 语言编写一个解析器,但陷入了其中一种递归类型。

我有以下类型

data LValue =                                                                                                                       
    Id Atom                                                                                                                         
    | RecordAccess LValue Atom                                                                                                      
    | ArraySubscript LValue Expression  
Run Code Online (Sandbox Code Playgroud)

具有以下语法:

lvalue -> id
       -> lvalue.id
       -> lvalue[exp]
id -> atom
exp -> (the big, overarching, everything-is-an-expression type)
Run Code Online (Sandbox Code Playgroud)

我试图用秒差距解析它,但我陷入了无限递归循环。这是我当前的基本解析器:

lvalueParser :: Parsec String () LValue                                                                                             
lvalueParser =                                                                                                                      
    try (Id <$> (atomParser <* (notFollowedBy (char '.'))))                                                                         
    <|> try recordAccessParser                                                                                                      
    where recordAccessParser = (uncurry RecordAccess) <$> do {                                                                      
      record <- lvalueParser;                                                                                                         
      char '.';                                                                                                                     
      atom <- atomParser;                                                                                                           
      return (record, atom)                                                                                                      
      }
Run Code Online (Sandbox Code Playgroud)

(注意:我还没有尝试实现任何处理该ArrayAccess部分的方法) …

parsing haskell parsec left-recursion

4
推荐指数
1
解决办法
1190
查看次数

Rails顺序方法; 列命名:order

我有一个模型练习,它有以下列:circuit和:order(以及其他).在一个视图中,我试图首先通过:circuit然后通过:order来命令练习.当我使用以下内容时:

@schedule.exercises.order(:circuit).each do |exercise|
Run Code Online (Sandbox Code Playgroud)

它按预期工作.但是,当我尝试添加:order列时:

@schedule.exercises.order(:circuit, :order).each do |exercise|
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SQLite3::SQLException: near "order": syntax error: SELECT "exercises".* FROM "exercises"  WHERE "exercises"."schedule_id" = 1 ORDER BY circuit, order
Run Code Online (Sandbox Code Playgroud)

当我单独传递:order列时,也会发生同样的错误:

@schedule.exercises.order(:order).each do |exercise|

SQLite3::SQLException: near "order": syntax error: SELECT "exercises".* FROM "exercises"  WHERE "exercises"."schedule_id" = 1 ORDER BY order
Run Code Online (Sandbox Code Playgroud)

我假设这是因为列名(:order)与SQL方法名(order)相同.我想知道除了改变我的列标题之外还有什么方法吗?

谢谢,斯图尔特

sql ruby-on-rails

3
推荐指数
1
解决办法
3493
查看次数