2010-04-26 30 views
7

Làm cách nào để có thể đạt được các tham số chuỗi và URL truy vấn trong tuyên bố khối link_to? Ngay bây giờ, tôi có điều này, mà làm việc:Đường ray: link_to với khối và tham số GET?

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

Các công trình trên, và kết quả đầu ra:

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

Những gì tôi muốn làm một cái gì đó như thế này là:

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

Nhưng các định dạng đầu ra ở trên:

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

Đó là Không phải những gì tôi đang tìm kiếm ... Tôi muốn nó xuất ra một URL giống như ví dụ trước.

Tôi làm cách nào để đạt được điều này?

Trả lời

0

Hãy thử follwing

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

hoặc để đạt được cùng một url Sử dụng

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

link_to mất các tùy chọn tương tự mà url_for làm. Có nói rằng, không có tùy chọn :type và nó không thực sự chấp nhận các khối, vì vậy tôi đoán là lý do ví dụ thứ hai của bạn hoạt động là vì nó nằm trong phạm vi của chế độ xem Sách. Như được đề cập bởi Tom trong câu trả lời cho câu trả lời này, việc chuyển một khối tới link_to có thể được sử dụng để thay thế cho đối số đầu tiên (văn bản liên kết).

Nếu sách là tài nguyên, bạn có thể nhận được trình trợ giúp link_to để tạo URL bạn đang tìm kiếm bằng cách chuyển cho nó một trong các đường dẫn tài nguyên được tạo tự động, tiện dụng tạo cho bạn. Chạy rake routes trước khi bạn cố gắng này:

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

Nếu không, bạn rõ ràng có thể nêu những gì điều khiển/hành động mà bạn muốn liên kết đến:

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

Chúc mừng hack.

EDIT: Hầu như quên, bạn CÓ THỂ thêm chuỗi truy vấn bỏ qua chúng trong SAU KHI bạn khai báo id của đối tượng bạn đang liên kết đến.

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

Sản phẩm sẽ /books/1/edit?query1=value&query2=value. Hoặc:

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

Khối dường như là một cách để thu dữ liệu vào để đặt trong ' thẻ '. http://railsapi.com/doc/rails-v2.3.5/classes/ActionView/Helpers/UrlHelper.html#M002452 –

0

Ruby không biết nếu bạn đang gửi khối do ... end-link_to hoặc book, và gửi nó cho book vì nó là gần gũi hơn với các khối. book do ... end trả lại nil, vì vậy, bạn đã rời đi với link_to :edit, :type=>'book', :id=>nil. Bạn sẽ cần phải gắn các thông số, và trong khi bạn đang ở đó, tôi sẽ viết lại nó để dễ hiểu hơn với bộ điều khiển, hành động, thiết lập id: link_to{:controller=>"books",:action=>"edit",:id=>book}do ... end

0

in mime_types.rb tập tin add:

Mime :: Type.register "text/ứng dụng",: Cuốn sách

+0

thêm loại cho yêu cầu –

Các vấn đề liên quan