【发布时间】:2012-08-01 03:45:40
【问题描述】:
我是 Rails 新手,遇到过这个问题。
我有一个 books_controller,我在其中定义了一个名为下载的新操作:
def download
@book = Book.find(params[:id])
return send_file @book.get_filepath, :type => 'application/pdf', :filename => @book.get_filename
end
我的 routes.rb 是这样的:
resources :books
match '/books(/download(/:id))', :controller => "books", :action => "download"
我想创建一个类似 /books/download/10 的 URL 来调用下载操作。
我不确定如何创建该链接。我曾尝试阅读 Rails 路由指南,但对此感到非常困惑。
我试过了
<td><%= link_to books_download_path(book) %></td>
它显然不起作用。
undefined method `books_download_path' for #<#<Class:0x682ac40>:0x482cad8>
如果能提供任何帮助,我将不胜感激。
谢谢
附:也许 /books/10/download 比 /books/download/10 更有意义
index.html.erb
<table>
<% @recent_books.each do |book| %>
<tr>
<!-- <td><%= image_tag(book.get_thumbnail) %></td> -->
<td><%= truncate(book.get_title, :length => 30) %></td>
<td><%= book.get_author %></td>
<td><%= book.get_summary %></td>
<td><%= truncate(book.get_filename, :length => 30) %></td>
<!-- <td><%= link_to 'Download', book %></td> -->
<td><%= link_to "Download", download_book_path(book) %></td>
</tr>
<% end %>
<table>
routes.rb
Caliberator::Application.routes.draw 做 资源:作者
resources :books do
get :download, :on => :member, :to => 'books#download'
end
结束
【问题讨论】:
标签: ruby-on-rails routing routes