0

Formtastic を使用した次のコードがあります。

- if can? :update, @workout
  = semantic_form_for ew.exercise, :url => user_exercise_path(@user, ew.exercise) do |exercise|
    %table
      %thead
        %tr
          %th.reps Reps
          %th.weight Weight
      %tbody
        = exercise.semantic_fields_for :log_entries do |log_entry|
          = render 'log_entry_fields', :f => log_entry
    .links
      = link_to_add_association 'Add Set', exercise, :log_entries
    = exercise.actions do
      = exercise.action :submit

それを考えると、私の問題は、log_entries が演習に関連するすべてのログ エントリに対して log_entries をレンダリングすることです。

たとえば、Bob がベンチプレスのログ エントリを記録し、Hope がベンチプレスのログ エントリを記録している場合、このフォームでは、両方の log_entries がレンダリングされます。私がやりたいことは、その演習に対する current_user の log_entries のみをスコープにすることです。

どうすればいいですか?

4

1 に答える 1

0

次の変更で解決しました。

= exercise.semantic_fields_for :log_entries, exercise.object.log_entries.for_user(@user) do |log_entry|

コンマの後のすべてが新しいです。私log_entry.rbは次のクラスメソッドを作成しました:

def self.for_user(user)
  where(:user_id => user.id)
end
于 2012-10-05T00:57:49.873 に答える