我对铁轨上的红宝石很新,但简单的操作让我发疯了
我将变量从Controller传递给View
但是我认为所有与我相似的问题都是零,但没有一个是解决方案
我有一个名为news_read
def news_read
@name = "Come On "
end
在正确关联视图(news_read.html.erb)
中,我尝试了这个
<%= @name.inspect %>
但是浏览器上的值是
nil
3小时前我遇到了麻烦,而且根本没有工作
任何帮助将不胜感激
修改
我尝试记录某些东西,但它没有被调用,所以我的路线看起来像这样
get "main/news_read"
get "main/index"
root :to => 'main#index', :as => 'main'
resources :categories
resources :testimonials
resources :news
resources :products
resources :teams
resources :abouts
resources :main
resources :header_titles
答案 0 :(得分:1)
我不能评论你的答案(不够SO点),所以我在这里添加。
您似乎覆盖了内部ActionView::TemplateRenderer#resolve_layout
(docs),我认为这不是您想要达到的目标,可能会给您带来问题。
我建议你在你的控制器中将该方法重命名为其他方法,但保持它是受保护的或私有的,这样如果你有自由路由,它将不会被视为一个动作方法。
答案 1 :(得分:0)
使用:
<%= debug @name %>
据我所知.inspect
将hash / array作为字符串返回。
还要考虑添加到您的Gemfile:
group :development do
gem 'better_errors'
end
然后运行bundle install
修改
在你的路线中试试这个
match 'main/news' => 'main#news_read'
然后您的API是 localhost / main / news
答案 2 :(得分:0)
我修复了我试图根据操作名称指定另一个布局,并且该方法是私有的我不知道为什么它会阻止它但是删除它修复了问题
就像这样
layout :resolve_layout
private
def resolve_layout
case action_name
when "news_read"
"news"
else
"application"
end
end
解决方案是
layout :resolve_layout
def resolve_layout
case action_name
when "news_read"
"news"
else
"application"
end
end