Rails:使用所选的模型实例渲染部分

时间:2016-05-09 19:10:57

标签: ruby-on-rails

我有一个rails应用程序,它使用相册模型显示各种专辑封面的图像。我想在这些专辑封面旁边呈现部分视图,并在单击时显示所选专辑的详细信息。

我已经找到了这方面的例子,但似乎找不到能帮助我的人。说过我是铁杆新手,所以我不确定我是否正在查找正确的条款。

我知道这一定是一个简单的问题,但如果有人能指出我正确的方向,我将不胜感激。

更新 这看起来类似于我想要做的事情:

How to get Rails 3 link_to :partial to work

我按如下方式设置了我的代码:

的routes.rb

Rails.application.routes.draw do
  root 'albums#index'
  resources :albums do
    get :details, :on => :member
  end

albums_controller.rb

class AlbumsController < ApplicationController
  def index
    @albums = Album.all
  end

  def show
    @album = Album.find(params[:id])
    @tracks = @album.tracks
  end

  def details
    respond_to do |format|
      format.js { render :layout => false }
    end
  end

end

视图/专辑/ index.html.erb

<div class="row">  
  <% @albums.each do |album| %>
  <div class="col-md-3">
    <%= link_to 'Details', details_album_path(:id => album.id),  :remote => true %>
      <div class="thumbnail">
        <img src="<%= album.cover %>">
      </div>
    <% end %>
  </div>
  <% end %>
</div>

<div id="details">

</div>

视图/专辑/ details.js.erb

$( "#details" ).html( "<%= escape_javascript( render( :partial => "details", :locals => { :album => @album} ) ) %>" );

视图/专辑/ _details.html.erb

<div>
  <%= album.title %>
</div>

如果我运行此选项并单击相册的详细信息链接,我会在开发工具中收到此错误:

  

获取http://localhost:3000/albums/1/details 500(内部服务器错误)

Rails error message at url shown in dev tools error above

并且在任何地方都没有显示部分内容。

非常新的rails,所以任何指针都赞赏。如果这不是解决这个问题的最佳方式,那么欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

所以我通过更新albums_controller.rb中的def details来包含@album = Album.find(params[:id]),在评论中使用穆罕默德的建议来解决这个问题:

  def details
    @album = Album.find(params[:id])
    respond_to do |format|
      format.js { render :layout => false }
    end
  end