2016-07-03 4 views
0

私は以下のことを行う正しい方法を探しています。レールのアドバイスレンダリングの表示

def show 
    @photo = Photo.find params[:photo_id] 
end 

私はすべて同じコントローラのアクションを使用して4つの異なる見解を持っている:

は、私は本当にだけのようなデータベースのエントリを取得するコントローラのアクション「ショー」を持っています。私はこれをどのように実装しますか?私は二つの方法を考えている

2)

def show 
    @photo = Photo.find params[:photo_id] 

    respond_to |view| 
    view.one {render ...view1} 
    view.two {render ...view2} 
    view.three {render ...view3} 
    view.four {render ...view4} 

    end 

end 
respond_to使用...

def show 
    @photo = Photo.find params[:photo_id] 

    case params[:view] 
    when 'view1' 
    render ...view1 
    when 'view2' 
    render ...view2 
    when 'view3' 
    render ...view3 
    when 'view4' 
    render ...view4 

end 

...または:

1)は、URLパラメータを使用します

...まったく違う何か?

教えてください。

+0

「正解」を定義してください - これはかなり賛成しているようです。 – Li357

+0

最初のオプションは可能です。ただし、ビュー・パラムを渡す以外の差別化要因がある場合は、それを使用してください。たとえば、wheatherユーザーがサインインしていること、写真が特定の属性を持っていること、iserが管理者であることなどに基づいて異なるビューを表示することなどが、これを維持する方が簡単な方法です。 –

+0

@ andrew-l - あなたの意見を教えてください。 – martin

答えて

1

私はのparamsと同じビューを呼び出します[:ビュー]、などのように:

def show 
    @photo = Photo.find params[:photo_id] 
    render params[:view].to_sym 
end 

限り、あなたがうまくいく可能なすべてのパラメータを、カバービューファイルを持っているよう。

関連する問題