2016-08-10 3 views
0

ビュー内で部分をレンダリングしようとしています。私は「未定義のローカル変数」が解消されるように、ローカル変数を渡す必要がビュー内でハムール部分をレンダリングするためのローカル変数を渡すためのコントローラデータへのアクセス

= render :partial => 'data_popups/events' 

:私は、レンダリングされているHAMLドキュメントに呼びかけ私の見解では、次のコードを持っています。すべてのデータが入っているコントローラは、dataPopupsController#eventsの下にあります。データにアクセスするにはどうすればいいですか?部分的にローカル変数を渡すことはできますか?すべての助けを歓迎します。乾杯〜

答えて

2

外側のビューでデータが利用できる場合は、localsオプションを使用して部分的にデータを渡すことができます。例えば、これはあなたのホームページ上にあった場合、あなたは

# app/controllers/pages_controller.rb 
class PagesController < ApplicationController 
    def home 
    @data = Model.get_data 
    end 
end 

次に、あなたのビューで、renderlocalsオプションを使用して、部分的にその@dataを渡す...このようなコントローラにデータを渡すことができます方法:

# app/views/pages/home.html.erb 
<%= render :partial => 'data_popups/events', :locals => { :data => @data } %> 
+0

いいえ、どうすればコントローラを介して外部ビューでデータを利用できますか? –

+0

コントローラーを介してデータを利用できるようにするために答えを広げました。 – rmhunter

+0

私は次の部分的なものがある場合:events/show/_sidebar.html.haml ...私はこのコードをevents_controllerに含める必要がありますか?現在、私はdata_popups_controllerの変数を照会してアクセスしています。 –

0

お使いのコントローラのコードを見ずには、ここにあなたが何ができるかの基本的な例です:WH

class UsersController < ApplicationController 
    def index 
    @data = User.get_data 
    end 
end 

# views/users/index.html.erb 

<%= @data.some_method %> 
<%= render 'data_popups/events', :locals => { :data => @data } %> 

# views/data_popups/_events.html.erb 

<%= data.some_other_method %> 

お知らせ@dataを 'data_popups/events'のローカルとして渡すと、ローカル変数はdataとなります。

関連する問題