2010-04-26 64 views
7

如何在link_to塊聲明中實現查詢字符串和URL參數?現在,我有這個,它的工作原理:Rails:link_to與塊和GET參數?

<%= link_to 'Edit', :edit, :type => 'book', :id => book %> 

上述工作,輸出:

http://localhost:3000/books/edit/1?type=book 

我想要做的是這樣的:

<% link_to :edit, :type => 'book', :id => book do %> 
    ... 
<% end %> 

但以上格式輸出:

http://localhost:3000/books/edit/ 

這是不是我正在尋找的...我希望它輸出一個像上例那樣的URL。

我該如何做到這一點?

回答

0

嘗試Follwing

<% link_to(:edit, :type => 'book', :id => book) do %> 
    ... 
<% end %> 

或達到相同的URL中使用

<% link_to(:action=>'edit', :type => 'book', :id => book) do %> 
    ... 
<% end %> 
13

link_to需要的是url_for做同樣的選擇。 話雖如此,沒有:type選項,它並不真的接受塊,所以我的猜測是,你的第二個例子工作的原因是因爲它位於書視圖的範圍內。正如Tom在對此答覆的回覆中所述,將代碼塊傳遞給link_to可用作第一個參數(鏈接文本)的替代品。

如果Book是一個資源,您可以通過傳遞一個方便的自動生成的資源路徑來爲您生成所需的URL,幫助程序可以讓link_to幫您找到。運行rake routes您嘗試在此之前:

<%= link_to "Edit", edit_book_path(book) %> 

否則,你可以明確說明/你想要的控制器動作鏈接:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %> 

快樂黑客。

編輯:幾乎忘了,你可以添加查詢字符串繞過他們後,你宣佈你鏈接到的對象的ID。

<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value") 

將產品/books/1/edit?query1=value&query2=value。另外:如果你要發送的do ... endlink_tobook,並把它發送到book,因爲它更接近塊

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %> 
+1

塊似乎是捕獲輸入'標籤'內放置的方式。 http://railsapi.com/doc/rails-v2.3.5/classes/ActionView/Helpers/UrlHelper.html#M002452 – 2010-04-26 07:07:54

0

紅寶石不知道。 book do ... end返回nil,所以你只剩下link_to :edit, :type=>'book', :id=>nil。您需要將參數括起來,並且當您處於這種狀態時,我會用控制器,動作和ID設置來更改它,使其更容易理解:link_to{:controller=>"books",:action=>"edit",:id=>book}do ... end

0

in mime_types。RB文件中加入:

啞劇:: Type.register「文/應用」:書

+0

爲請求添加一個類型 – 2010-04-27 07:36:08