0

/events のショー ページからパーシャルにコードを挿入しようとしています。コードをショー ページで使用すると問題なく動作しますが、コードを部分的に抽出すると、No Method Error が発生します。

undefined method `event' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_PaperTrail_Version:0x007f4368823a68>

バージョン/_version.html.erb

<% cache version do %>
  <div class="feed-item">
    <h4>
      <%= link_to version.item.name, version.item %> 
      <small>
      <%= version.event + "d" %> by <%= link_to User.find(version.whodunnit).username, User.find(version.whodunnit) %>
      </small>
    </h4>

    <ul class="list-unstyled">
      <% version.changeset.each do |data| %>
        <li>
          <strong><%= data[0].capitalize %>:</strong> 
          <% if data[1][0].present? %><p class="red">- <%= data[1][0] %></p><% end %> 
           <p class="green">+ <%= data[1][1] %></p>
        </li>
      <% end %>
    </ul>
  </div>
<% end %>

show.html.erb

<%= render :partial => '/versions/version', :object => @versions %>

イベントコントローラー

  def show
    @versions = @event.versions
  end

イベントモデル

has_paper_trail

ショービュー内にコードを配置する代わりに、コードを部分的に配置する方法はありますか? ありがとう。

編集: まだNo Method Errorが表示されます

undefined method `item' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_PaperTrail_Version:0x007f43688ee1a0>

events_controller.rb

before_action :set_event, only: [:show, :update, :destroy]

def set_event
  @event = Event.find(params[:id])
end
4

1 に答える 1

0

@eventイベントコントローラーで変数を定義しましたか? メソッドは、実際の@event.versionsイベント オブジェクトで呼び出す必要があります。

例えば

def show
  @event = Event.find(1)
  @versions = @event.versions
end
于 2014-03-18T16:52:53.457 に答える