Имхо неплохо было бы взять на вооружение
REST, выглядеть будет примерно так:
GET /items #=> index
GET /items/1 #=> show
GET /items/new #=> new
GET /items/1/edit #=> edit
PUT /items/1 #=> update
POST /items #=> create
DELETE /items/1 #=> destroy
Соответственно, для new и edit можно использовать один шаблон, а в зависимости от типа запроса дергается разный метод в контролере.
Да, и про лайауты сказали правильно — использовать нужно, дублирование кода это зло.