如何使用 Rails 中的分部视图点击多个页面



我有一个索引,显示两者都包含社交媒体共享,看起来像这样:

 <% @books.drop(1).each_slice(2) do |bookish| %>
   <div class="row">
     <% bookish.each do |book|%>
       <div class="fb-share-button" id="fbid>
         <div data-href="url.com/<%= book.book_name %>" data-layout="button" data-size="small">
           <a class="share-link" target="_blank" href="facebook.com/<%=book.book_description%>">

这适用于索引和显示,但由于我在多个位置重复相同的代码,我宁愿只使用部分视图。因此,当我将该代码移动到部分代码并将其替换为以下内容时:

<% render partial: '/books/book' %>

我最终得到了未定义的book_name方法。看看我的终端它正在共享

ActionView::Template::Error (undefined method 'book_name' for nil:NilClass)

我错过了需要在我的部分添加一些东西吗?

你错过了locals

<% render partial: '/books/book', locals: { book: book } %>

有两种方法可以做到这一点:

1(带钥匙partial, locals

<% render partial: '/books/book', locals: { book: book } %>

2(没有钥匙partial, locals

<% render '/books/book', book: book %>

方法render调用方法_normalize_args内部,因此如果您使用第二种方法传递参数,它将自动检测要呈现的内容的类型。 文档

最新更新