回答編集履歴
1
説明を追加しました
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
ところで、このコードではMylibraryクラスのインスタンス変数である@sampleとか@nameは外部から参照できません。
|
9
|
+
ところで、このコードではMylibraryクラスのインスタンス変数である@sampleとか@nicknameは外部から参照できません。
|
10
10
|
|
11
11
|
前回説明したように、インスタンス変数を外部(コントローラなど)で参照するには、ゲッターメソッドが必要なのでした。
|
12
12
|
|
@@ -115,3 +115,73 @@
|
|
115
115
|
rubyにおいてクラスのインスタンス変数(@がついた変数)は外部からは原則アクセスできないので、必ずゲッターメソッドが必要です。
|
116
116
|
|
117
117
|
コントローラの@変数が、ビューから参照できる事のほうが例外なのです。
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
ちなみにMylibraryの中にコントローラから参照したい変数が複数あるのであれば、その文だけゲッターを追加します。
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
|
127
|
+
class Mylibrary
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
def sample
|
132
|
+
|
133
|
+
sponsor = Customer.find(1)
|
134
|
+
|
135
|
+
@sample = sponsor. sponsor1
|
136
|
+
|
137
|
+
@nickname = sponsor.nickname
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
def nickname
|
144
|
+
|
145
|
+
@nickname
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
def sample
|
152
|
+
|
153
|
+
@sample
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
```
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
そして、コントローラでは、Mylibrary.newしたものをインスタンス変数(ここでは@mylib)に入れます。
|
166
|
+
|
167
|
+
これなら、ビューで、@mylib.nicknameとか、@mylib.sampleと使う事が出来ます。
|
168
|
+
|
169
|
+
```ruby
|
170
|
+
|
171
|
+
SampleController < ApplicationController
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
def sample
|
176
|
+
|
177
|
+
@mylib = Mylibrary.new
|
178
|
+
|
179
|
+
@mylib.sample
|
180
|
+
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
end
|
186
|
+
|
187
|
+
```
|