簡體   English   中英

如何路由到新的rails控制器操作

[英]How do I route to a new rails controller action

我是Rails的新手,遇到了這個問題。

我有一個books_controller,我在其中定義了一個名為download的新動作:

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>

我很感激你的幫助。

謝謝

PS Maybe / 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

結束

對於Rails 3,試試這個

resources :books do
  get :download, :on => :member, :to => 'books#download'
end

現在,在您的視圖中,您可以使用。

<%= link_to 'Download', download_book_path(book) %>

這將生成books/10/download類型鏈接。

試試以下

match '/books(/download(/:id))', :controller => "books", :action => "download", :as => "books_download"

參考: - naming_routes

你必須這樣做:

<%= link_to "Download", download_books_path + "/#{book.id}" %>

對於rails 3,你應該寫:

resources :books do
  member do
    get 'download'
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM