简体   繁体   English

局部使用纸迹

[英]Using partial with paper trail

I'm trying to put some code in a partial from my show page in /events. 我正在尝试在/ events的显示页面中部分放置一些代码。 The code works fine when I use it in my show page, but when i extract it to a partial I'm getting a No Method Error 当我在显示页面中使用该代码时,该代码工作正常,但是当我将其提取到部分内容时,出现“无方法错误”

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

versions/_version.html.erb 版本/_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 show.html.erb

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

events controller 事件控制器

  def show
    @versions = @event.versions
  end

events model 事件模型

has_paper_trail

Any idea how i could put my code in a partial instead of having it inside my show view? 知道我如何将我的代码放在部分而不是将其放在show视图中吗? Thanks. 谢谢。

EDIT: I still get a No Method Error 编辑:我仍然收到无方法错误

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

events_controller.rb events_controller.rb

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

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

Do you have defined the @event variable in the eventscontroller? 您是否在@event中定义了@event变量? The @event.versions method has to be called on an actual event object. @event.versions方法必须在实际的事件对象上调用。

For example 例如

def show
  @event = Event.find(1)
  @versions = @event.versions
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM