0

私はRubyonRailsを初めて使用しますが、簡単な操作で夢中になります

コントローラからビューに変数を渡します

しかし、私が私のようなすべての質問を読んだという見方では、それはゼロですが、それらのどれも解決策ではありませんでした

私はというメソッドを持っています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
4

3 に答える 3

1

あなたの答えにコメントすることはできません(SOポイントが足りない)ので、ここに追加します。

ActionView::TemplateRenderer#resolve_layout内部( docs )を上書きしていたようですが、これはあなたが達成しようとしていたものではなく、問題を引き起こしている可能性があります。

コントローラーのそのメソッドの名前を別の名前に変更することをお勧めしますが、リベラルなルーティングを使用している場合にアクション メソッドとして扱われないように、保護または非公開のままにしてください。

于 2013-02-14T03:57:01.097 に答える
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
于 2013-02-14T03:11:08.420 に答える
0

使用する:

<%= debug @name %>

私の知る限り、.inspectハッシュ/配列を文字列として返します。

Gemfile への追加も検討してください。

group :development do
  gem 'better_errors'
end

次に実行しますbundle install

編集

あなたのルートでこれを試してください

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

次に、API はlocalhost/main/newsです

于 2013-02-14T02:59:49.627 に答える