2011-10-06 7 views
8

Acabo de instalar Ruby on Rails y creé un andamio llamado posts. RoR generó controladores y otros archivos necesarios para mí.¿Cómo cambiar las rutas en ruby ​​en los rieles?

Creé un nuevo método en posts_controller, pero no puedo acceder a él. Miré otros métodos que están en el controlador y parece que necesito acceder a ellos por /posts/[MY POST ID]/[MY METHOD NAME].

Suponiendo que creé mi método personalizado hello en el controlador, ¿cómo puedo acceder?

Miré routes.rb, pero no hay configuración para ello.

Actualizado:

entiendo que puedo configurar manualmente en routes.rb, pero ¿cómo trabajar todos los otros métodos? Por ejemplo, tengo los métodos "edit" y "update" en el controlador "posts_controller.rb". ¿Cómo funcionan esos dos métodos sin configurar las rutas?

# GET /posts/1/edit 
    def edit 
    @post = Post.find(params[:id]) 
    end 

no puedo encontrar una configuración que coincide con /posts/[0-9]/edit patrón.

Respuesta

9

La documentación que está buscando es Rails Routing From the Outside In. Una vez que haya leído esto, comprenderá todo lo que hace Rails para tomar su pedido y apuntarlo al método en su controlador.

3

En Rails 3.x

match 'posts/hello' => 'posts#hello'

Disponible en example.com/posts/hello

4

Esto le dará una buena ventaja en las rutas: http://guides.rubyonrails.org/routing.html

No todos los

El método que haga tendrá su propia ruta, los rieles se basan en el principio de reposo y los métodos creados en el andamio en el controlador posterior que siguen esas rutas, como índice, mostrar etc. ...

Puede obligar a su método a que se le agregue una ruta, pero en realidad rara vez necesita hacerlo ya que seguir la convención es mucho más fácil.

5

Necesitas agregar una ruta hacia routes.rb. Por ejemplo:

# Previous routes 
# resources :posts 

# Updated routes 
resources :posts do 
    get "hello", :on => :member 
end 

Tener un vistazo a este Rails guide about routing, que le ayudará a entender los carriles de enrutamiento.

1

Cuando utilizó el andamio para generar publicaciones, agregó una línea resources :posts en su archivo routes.rb. Esa línea configura rutas para todas las acciones del controlador que se generaron. Como Caleb menciona arriba, no todas las acciones tienen un camino dedicado. Una única ruta puede corresponder a múltiples acciones porque los rieles también tienen en cuenta el método HTTP. Entonces, por ejemplo, la ruta /posts con el método HTTP GET corresponde a la acción index del controlador, mientras que la misma ruta con el método HTTP PUT corresponde a la acción update del controlador. Puede ver estas asociaciones cuando ejecuta rake routes desde la consola.Estoy de acuerdo con Jordan y Caleb en que Rails Guides es una buena lectura y te ayudará a entender las rutas.

+0

// ¡Gracias por la respuesta !. ¿Cómo configura ROR las rutas simplemente leyendo una línea de código (recursos: publicaciones)? – Moon

+0

No he buscado el código fuente para ver exactamente cómo lo hace Rails, pero cuando usa 'recursos', Rails configura 7 rutas. Consulte la sección 2.2 de la guía antes mencionada: http://guides.rubyonrails.org/routing.html – John

+0

Nunca encontré una explicación mejor sobre los conceptos básicos de las rutas que esta: https://www.youtube.com/watch? v = g3SuV-A9bak & index = 3 y list = PLAC08CE3187BC75F1 – Mauddev

Cuestiones relacionadas