【问题标题】:Call a method associated with partial rails调用与部分导轨关联的方法
【发布时间】:2015-11-29 19:07:41
【问题描述】:

在我的控制器中,我有这个方法可以返回特定书籍控制器/books_controller 的列表

  def postings
    @books = Book.postings(current_user.id).order("created_at ASC")
    render :partial =>'postings'
  end

我在views/books/_postings.html.erb中有一个部分

<div class="container">
<h4>My Partial Postings</h4>
 <% @books.each do |book| %>
      <div class="row">
        <div class="col-sm-2"><img src="<%= book.image_path %>" alt="..." class="img-responsive"/></div>
        <div class="col-sm-10">
          <h4 class="nomargin"><%= book.title %></h4>
          <p><%= book.description %></p>
          <p>Quantity: <%= book.quantity %></p>
          <p>Available for: <%= book.sale_type %></p>
     </div>
     </div>
     <hr>
 <% end %>
</div>

在我的路线中:

 resources :books do
    collection do
      get 'postings'
    end
  end

关于运行 rake 路线:

 postings_books GET  /books/postings(.:format)  books#postings

当我使用 localhost:3000/books/postings 时,我会得到所需的部分显示书籍列表。但是当我想从其他视图调用此部分时,例如从 localhost:3000/dashboard/index:

<div class="tab-pane" id="postings">
                    <%= render  'books/postings', :collection => @books %>
</div>

我收到以下错误:

 Showing /home/swati/867/WorkSpace2/assignment_3/app/views/books/_postings.html.erb where line #4 raised:

undefined method `each' for nil:NilClass

Extracted source (around line #4):
<div class="container">
<h4>My Partial Postings</h4>
 <% @books.each do |book| %>
      <div class="row">
        <div class="col-sm-2"><img src="<%= book.image_path %>" alt="..." class="img-responsive"/></div>
        <div class="col-sm-10">

我知道 render 只是渲染部分内容,而不在 books_controller 中调用我的方法发布,并且我的部分内容无法访问 @books ,这是 nil。这怎么可能?

【问题讨论】:

    标签: ruby-on-rails ajax partials


    【解决方案1】:

    当您访问dashboard/index 时,您实际上是在调用dashboards_controllerindex 方法。如果您想在那里渲染 books/postings 部分,您还需要在该控制器中添加书籍列表 (@books)。

    更多信息在这里:http://guides.rubyonrails.org/action_controller_overview.html

    【讨论】:

    • 谢谢,是的,我意识到,我实际上将方法发布从 books_controller 移到了dashboard_controller。我仍在尝试理解 MVC 。但我只是在某个地方读到控制器应该与视图相关联。因此,如果我想从仪表板的视图中访问发帖方法,最好在仪表板控制器而不是书籍控制器中使用该方法。我不确定我所做的是否理想,但效果很好。
    • 也只是为像我这样的 Rails 新手用户添加一点 :),如果您需要访问视图中的方法,则需要使用 helper_method .. 所以在我的控制器中我有 helper_method:张贴,从我的角度来看,我可以调用该方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    相关资源
    最近更新 更多