Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 渲染模板时如何使用字符串插值?_Ruby On Rails - Fatal编程技术网

Ruby on rails 渲染模板时如何使用字符串插值?

Ruby on rails 渲染模板时如何使用字符串插值?,ruby-on-rails,Ruby On Rails,我在Rails食谱中找到了这段代码 class BlogController < ApplicationController def display_by_date year = params[:year] month = params[:month] day = params[:day] day ='0'+day if day && day.size == 1 @day = day if ( year && month &&

我在Rails食谱中找到了这段代码

class BlogController < ApplicationController

def display_by_date
 year = params[:year]
 month = params[:month]
 day = params[:day]
 day ='0'+day if day && day.size == 1
 @day = day
 if ( year && month && day )
  render(:template => "blog/#{year}/#{month}/#{day}")
 elsif ( year )
  render(:template => "blog/#{year}/list")
 end
end

end
class BlogController“blog/#{year}/#{month}/#{day}”)
elsif(年)
呈现(:template=>“blog/#{year}/list”)
结束
结束
结束

我不确定如何命名模板,以便路由器可以找到它们。谢谢你的帮助。

我可以想象这里发生了什么,但是我认为代码示例有很多不正确的地方。首先,对render(:template)的调用没有路由,因为它们实际上是文件路径。这可能是在拉入预呈现的页面,并将它们包装在应用程序布局中,作为某种基本的缓存。目前尚不清楚是什么首先生成了这些缓存文件

您需要具有以下内容的文件:

app/views/blog/2010/10/20.html.erb
app/views/blog/2010/list.html.erb
路由是将传入的请求委托给相应的控制器操作的,因此这些路由很可能是这样的:

map.connect '/blog/:year/list', :controller => 'blog', :action => 'display_by_date'
map.connect '/blog/:year/:month/:day', :controller => 'blog', :action => 'display_by_date'
您应该使用Rails.cache机制来代替这种模板缓存委派,该机制支持多种保存部分结果的方法,包括文件,但生成和终止部分结果的方法要合理得多

请注意,这是一些糟糕的格式化代码。通常,您需要使用以下简单方法格式化参数:

render(:template => "blog/%04d/%02d/%02d" % [ params[:year].to_i, params[:month].to_i, params[:day].to_i ])

这将根据需要用零填充。这比检查字符串的长度要健壮得多,如果字符串只有一个,则添加一个零,这样做的好处是它只是一行,一行定义了格式和模板。

这段代码看起来既旧又糟糕。我建议你阅读一些文档并学习一些基本教程。然后当你遇到麻烦的时候,发布一些具体的问题。我确实有一个具体的问题,如何呈现上面引用的模板?换句话说,我需要给模板命名什么,这样路由器才能找到它们。模板的可能重复项