さまざまなユーザー グループを表示したいページがあります。これまでのところ、UsersController (ArrayController) のグループを次のようにフィルタリングしています。
users_controller.js.coffee:
App.UsersController = Ember.ArrayController.extend
content: []
group1: (->
@get('model').filterProperty('role', "group1")
).property('model.@each.type')
group2: (->
@get('model').filterProperty('role', "group2")
).property('model.@each.type')
group3: (->
@get('model').filterProperty('role', "group3")
).property('model.@each.type')
ユーザー テンプレートの各グループを次のように (Emblem.js を使用して) ループすることができます。
ユーザーのエンブレム
.role
h3 Group 1
each user in group1
.segment
= link-to 'user' user | #{user.first} #{user.last}
p
span #{user.shortStory}
.role
h3 Group 2
= each user in group2
.segment
= link-to 'user' user | #{user.first} #{user.last}
p
span #{user.shortStory}
.role
h3 Group 3
= each user in group3
.segment
= link-to 'user' user | #{user.first} #{user.last}
p
span #{user.shortStory}
各ユーザーのモデルには「ストーリー」があります。UserController には、100 文字程度のスニペットに短縮する shortStory というメソッドがあります。(次のコードを参照)
user_controller.js.coffee
App.UserController = Ember.ObjectController.extend
shortStory: (->
short = @get('story').substring(0, 100)
for i in short by - 1
if i == " "
break
else
short = short.slice( 0, -1)
short
).property('story')
私の問題は、ショートストーリーをどのユーザーにも表示できないことです。次のようなさまざまな構文を試しました。
span= user.shortStory
span #{user.shortStory}
span= shortStory
span= #{user.shortStory}
ビューでUsersControllerフィルターメソッドをループしながらUserControllerメソッドにアクセスする方法を誰かが知っていれば、それは素晴らしいことです。
そもそもデータをフィルタリングするための他の提案も受け付けています。私はまだ残り火にかなり新鮮です。