我有一个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,所以任何指针都赞赏。如果这不是解决这个问题的最佳方式,那么欢迎任何建议。
答案 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