Ruby on rails 控制器变量在视图中为零

Ruby on rails 控制器变量在视图中为零,ruby-on-rails,ruby-on-rails-3,model-view-controller,Ruby On Rails,Ruby On Rails 3,Model View Controller,我对RubyonRails非常陌生,但简单的操作让我抓狂 我将变量从控制器传递到视图 但在我看来,这是零。我读了所有与我类似的问题,但没有一个是解决方案 我有一个方法叫news\u read def news_read @name = "Come On " end 在右侧的关联视图(news\u read.html.erb)中,我尝试了以下方法 <%= @name.inspect %> 3个小时前我的手机出了问题,根本不起作用 任何帮助都将不胜感激 编辑 layo

我对RubyonRails非常陌生,但简单的操作让我抓狂

我将变量从控制器传递到视图

但在我看来,这是零。我读了所有与我类似的问题,但没有一个是解决方案

我有一个方法叫
news\u read

def news_read
    @name = "Come On "
end
右侧的关联视图
(news\u read.html.erb)
中,我尝试了以下方法

<%= @name.inspect %>
3个小时前我的手机出了问题,根本不起作用

任何帮助都将不胜感激

编辑

    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
我试图记录一些东西,但它没有被调用,所以我的路由看起来像这样

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
使用:

然后运行
bundle安装

编辑

在你的路线上试试这个

match 'main/news' => 'main#news_read'

然后你的API是localhost/main/news

我修复了我试图根据操作名称指定另一个布局,并且该方法是私有的,我不知道为什么它会阻止它,但删除它修复了问题

就这样

    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
解决方案是这样的

    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

我不能评论你的答案(没有足够的分数),所以我在这里加上这个

似乎您正在覆盖内部的
ActionView::TemplateRenderer#resolve_layout
(),我认为这不是您想要实现的,可能是您遇到的问题


我建议您将控制器中的该方法重命名为其他方法,但请将其保持为受保护或私有,这样,如果您有自由路由,它就不会被视为操作方法。

您确定您认为正在调用的控制器方法实际上正在被调用吗?如果在操作中调用调试器或记录器,是否会打印日志?获取“main/news\u read”日志没有出现如果我将布局设置为false,则无法获取值,否则无法获取该值这是默认路由,例如,
get“main/news”
匹配“main/news”=>“main”新闻的缩写:via=>:get
感谢您的帮助,我想出来了,看看我的回答,“是这样的”和“解决方案是这样的”看起来和我一样。我遗漏了什么?第二行的private:)@RyanBigg如果你知道为什么,请告诉我为什么?我不知道这与OP有什么关系。我不认为private是你问题的原因。我知道这是OP相关的问题,但是删除它修复了错误你认为我应该在stackoverflow上问它为什么会发生这种情况吗?谢谢你提供的信息,但仍然是相同的结果它一定是ruby中的OOP