2014-02-20 4 views
0

Мой первый проект на рубине на рельсах. Я получаю эту ошибку enter image description hereActiveRecord :: RecordNotFound

Мой print.html.erb статический page.It имеет связь <a href="posts/index">Show</a>

И страница печати индексной страницы в моем случае то есть локальный: 3000 открывает страницу печати.

Это моя страница index.html.erb (это связанная страница)

<h1>Listing posts</h1> 

<table> 
    <tr> 
    <th>Title</th> 
    <th>Text</th> 
    </tr> 

    <% @posts.each do |post| %> 
    <tr> 
     <td><%= post.title %></td> 
     <td><%= post.text %></td> 
    </tr> 
    <% end %> 
</table> 

Это мой контроллер

class PostsController < ApplicationController 
def index 
    @posts = Post.all 
end 

def new 
    end 

def create 
    @post = Post.new(post_params) 
    @post.save 
    redirect_to @post 
end 

    def post_params 
    params.require(:post).permit(:title, :text) 
    end 

def show 
    @post = Post.find(params[:id]) 
end 

def print 
end 

end 

Это мои маршруты файл

Watermark::Application.routes.draw do 
resources :posts 
    root "posts#print" 

    post 'posts/index' => 'posts#index' 
    post ':controller(/:action(/:id(.:format)))' 
    get ':controller(/:action(/:id(.:format)))' 
end 

Я думаю, проблема в файле маршрутов.

+0

HTTP-глагол, как 'get',' post' декларация должен появиться перед 'resouce: post' и' resouce: post' будет обрабатывать все 'CURD' opeations нет необходимости объявлять его снова –

ответ

1

Ваши маршруты содержат некоторые фиктивные дополнения. Вы не должны были добавлять

post 'posts/index' => 'posts#index' 

Это только противоречит существующим маршрутам. Вы должны удалить его.

resources :posts все, что нужно для создания seven default RESTful routes in Rails, в том числе index, которые должны просто в /posts, не /posts/index.

Вы также должны удалить два маршрута, все они больше не полезны. Кажется вероятным, что вы работаете с довольно устаревшим учебником.

+0

это сработало ... smogло сказать я помещаю '/ posts/index' почему это идет, чтобы показать действие? –

+0

'удалить два маршрута« все-поймать »??? –

+0

Потому что вы используете 'resources: posts', который определяет маршрут' GET/posts /: id', который выше в файле маршрутизации, чем ваш собственный маршрут. Вы вводите 'posts/index' в адресную строку с вопросами GET. Он соответствует '/ posts /: id', с идентификатором« index ». Если вы отправляете запрос POST, он будет соответствовать вашему пользовательскому маршруту 'post 'posts/index''. – meagar

Смежные вопросы