7

我想傳遞一個參數給索引動作,但我只得到了show動作。如何將參數添加到rails index action/method?

的routes.rb:

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

blog_controller.rb:

def show 
    # code 
    end 

    def index 
    # code 
    end 

查看網址發送到顯示行動而不是指數的行動:

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

我要加入路線文件或在視圖?

輸出我的路線:

$ rake routes 

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

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

不知道我的理解。你想傳遞一個參數給索引操作? – c0deNinja 2012-03-20 00:14:20

+0

是的索引行動,如果你有其他的方式請寫 – Yosef 2012-03-20 00:38:04

回答

9

命令行會告訴你的路線,你可以用rake routes

你想要的路線用的是blogs_path,你可以到,例如添加一個參數blogs_path(other_item => :value)

究竟如何,將取決於你是否嘗試在一個控制器,另一種觀點認爲,等

對於視圖中使用它具有:<%= link_to 'My Link', blogs_path(:other_item => value) %>

+0

請看我編輯 – Yosef 2012-03-20 00:20:15

+0

請在編輯中看到我的路線輸出。我嘗試去做blogs_path('myparam'=>:value),但它需要再次顯示動作 – Yosef 2012-03-20 00:37:05

+0

更新了答案。 – 2012-03-20 00:49:37

1

這聽起來像你想2條路線:

/blogs/:other_param 
/blogs/:id 

但是,就像Rails一樣聰明,它不能確定參數是否被視爲other_param或id。

所以最簡單的辦法就是這個路由添加到默認的資源,像這樣:

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

這樣的Rails知道,如果你打算/博客/ other_param /電流,那麼它會將當前作爲:other_param。

1

使用下面的代碼來傳遞參數:

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

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

上面的代碼會重定向到與名作爲關鍵字和測試的參數指標作用,