7

Tôi muốn chuyển một tham số cho hành động chỉ mục, nhưng tôi chỉ nhận được hành động hiển thị.Làm cách nào để thêm tham số vào hành động/phương thức chỉ mục đường ray?

routes.rb:

Test1::Application.routes.draw do 
    resources :blog 
end 

blog_controller.rb:

def show 
    # code 
    end 

    def index 
    # code 
    end 

Xem url gửi để hiển thị hành động thay vì hành động chỉ số:

<a href="/blog/myvar"> My link </a> 

tôi nên thêm gì trong tuyến đường tập tin hoặc trong xem?

Sản lượng đường của tôi:

$ rake routes 

blog GET /blog(.:format)   {:action=>"index", :controller=>"blog"} 

blog GET /blog/:id(.:format)  {:action=>"show", :controller=>"blog"} 
+0

không chắc chắn nếu tôi hiểu . bạn muốn chuyển một tham số cho hành động chỉ mục? – c0deNinja

+0

có để lập chỉ mục hành động, nếu bạn có cách khác, vui lòng viết – Yosef

Trả lời

9

Các dòng lệnh sẽ cho bạn thấy tuyến đường mà bạn có thể sử dụng với rake routes

Các tuyến đường bạn muốn là blogs_path và bạn có thể thêm một tham số trên đó, ví dụ blogs_path(other_item => :value).

Chính xác như thế nào sẽ phụ thuộc vào việc bạn đang cố gắng sử dụng nó trong một bộ điều khiển, nhìn khác vv

Để có cái nhìn có: <%= link_to 'My Link', blogs_path(:other_item => value) %>

+0

vui lòng xem chỉnh sửa của tôi – Yosef

+0

vui lòng xem đầu ra tuyến đường của tôi trong chỉnh sửa. Tôi cố gắng để làm blog_path ('myparam' =>: value) nhưng nó cần để hiển thị hành động – Yosef

+0

cập nhật câu trả lời một lần nữa. –

1

Có vẻ như bạn muốn 2 tuyến đường:

/blogs/:other_param 
/blogs/:id 

Nhưng, cho thông minh như Rails, nó không thể tìm ra liệu param có nghĩa là được coi là một other_param hoặc như một id.

Vì vậy, giải pháp đơn giản nhất là thêm tuyến đường này để giá trị mặc định tài nguyên như vậy:

resources :blogs 
get "/blogs/other_param/:other_param", to: "blogs#index", as: "other_param_blogs" 

Bằng cách đó Rails biết rằng nếu bạn đang đi đến/blog/other_param/hiện tại, sau đó nó sẽ đối xử với hiện tại như: other_param.

1

Sử dụng mã dưới đây để vượt qua tham số:

<a href="/blog?name=test">My link </a> 

hoặc

<%= link_to "My link", blog_path(name: "test") %> 

trên mã sẽ chuyển hướng đến hành động chỉ mục với tên là chìa khóa và kiểm tra như tham số,