0

自分の Rails プロジェクトをゼロから始めたところです。分変数が特定の値に設定されている場合、ビューにこんにちはを表示しようとしています。

コードは現在コントローラーにあり、出力をビューに表示したいと考えています。これは可能ですか?それともビューに書きますか?それを正しく行うかどうかはわかりません。

home_controller.rb

class HomeController < ApplicationController
  def index
    @minutes = 23
    @minutes = params[:minutes]
  end
end

index.html.erb

<% if @minutes == 23 %>
  <%= "helllo" %>
<% else %>
  Anonymous
<% end %>
4

2 に答える 2

3
@minutes = params[:minutes] || 23
于 2012-05-31T12:46:45.633 に答える
2

この単純なケースでは、いくつかのロジックをビューに配置するだけで十分ですが、通常はヘルパー メソッドを追加することをお勧めします ( Getting Startedガイドを読むことをお勧めします)。

おそらくすでに app/helpers ディレクトリを見たことがあるでしょう。これらのヘルパー ファイルでは、ビュー レイヤーで使用できるメソッド、ビュー レイヤーに関連するメソッドを定義できますが、テンプレート ファイルに入れるには奇妙で汚いことを行います。

たとえば、あなたの場合、次のものを持つことができます/app/helpers/time_helper.rb

module TimeHelper
  # I know the method name sucks a little
  def show_hello_if_minutes_is_23(minutes = @minutes)
    if minutes==23
      "Hello"
    else
      "Anonymous"
    end
  end
end

次に、index.html.erbテンプレートで使用します。

<%= show_hello_if_minutes_is_23 %>

ご覧のように:

  1. メソッド名を読んで、それが何をするかを理解できます(高レベルで)
  2. rubyメソッドにロジックを入れる
  3. メソッドはminutes引数を取りますが、オプションです

そして、覚えておいてください: 通常、繰り返しは悪 (DRY のこと) ですが、ビューランドでは 1 回が多すぎることがあります(ただし、この単純なケースではありません)。

更新:@minutes変数を 23 に設定し、それを上書きして以前の割り当てを役に立たなくするのを見たところです。コントローラーで何をしようとしているのかわかりませんが、質問が分変数のデフォルト値を持つことに関するものである場合は、Yuri の回答と一緒に使用し、||=operator:を使用します@minutes ||= params[:minutes]

于 2012-05-31T12:47:52.887 に答える