7

Quiero pasar un parámetro a la acción de índice, pero solo estoy obteniendo la acción de mostrar.¿Cómo agregar parámetro a acción/método de índice de rieles?

routes.rb:

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

blog_controller.rb:

def show 
    # code 
    end 

    def index 
    # code 
    end 

Ver URL que enviar a mostrar la acción en lugar de acción index:

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

¿Qué debo añadir en archivo de rutas o a la vista?

salida de mis rutas:

$ rake routes 

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

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

no estoy seguro si entiendo . ¿Quieres pasar un parámetro a la acción de índice? – c0deNinja

+0

sí para indexar la acción, si tiene otra forma por favor escriba – Yosef

Respuesta

9

La línea de comandos le mostrará rutas que puede utilizar con rake routes

La ruta que desea es blogs_path y se puede añadir un parámetro a que, por ejemplo, blogs_path(other_item => :value).

Exactamente cómo va a depender de si se intenta utilizar en un controlador, otro punto de vista, etc.

Para la vista tiene: <%= link_to 'My Link', blogs_path(:other_item => value) %>

+0

por favor vea mi edición – Yosef

+0

por favor vea mi salida de rutas en edición. Intento hacer blogs_path ('myparam' =>: valor) pero lleva a mostrar la acción – Yosef

+0

actualizó la respuesta nuevamente. –

1

Parece que usted quiere 2 rutas:

/blogs/:other_param 
/blogs/:id 

Pero, por más inteligente que sea Rails, no puede determinar si el param está destinado a ser tratado como un otro_param o como un id.

Así que la solución más sencilla es añadir esta ruta a la configuración de recursos de este modo:

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

De esa manera rieles sabe que si vas a/blogs/other_param/corriente, entonces el tratamiento actual como el: other_param.

1

uso por debajo de código para pasar parámetros:

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

o

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

código anterior se redirigir a la acción de índice con nombre como llave y prueba como parámetro,

Cuestiones relacionadas