Я новичок в рельсах и мало знаю о рубине, я только что посмотрел учебник из Rails Guide 4.0. Все шло нормально, просто застрял на одной ошибке: Не удалось найти сообщение без идентификатора.
Я сделал все как в Rails Guide Getting Started Of Rails.
Вот код из руководства по рельсам:
def show
@posts = Post.find(params[:id])
end
и вот код просмотра:
<p>
<strong>Title:</strong>
<%= @posts.title %>
</p>
<p>
<strong>Text:</strong>
<%= @posts.text %>
</p>
После того, как это руководство по коду Rails скажет, что вы, наконец, сможете создавать новые сообщения. Посетите localhost:3000/posts/new и попробуйте!. Но после создания нового поста он показывает мне ошибку.
Я подумал, что это может быть проблемой, потому что я еще не создал действие индекса, поэтому я сделал с индексом. После действия индекса, когда я пытаюсь посетить этот адрес, обычно он должен отображать все записи из базы данных, а не отображать запись, показывающую ту же ошибку: Cann' не найти сообщение без идентификатора
Я пробовал слишком много сообщений в stackoverflow, но все они были связаны с некоторыми другими действиями, которые мне не нужны.
Пожалуйста, помогите мне решить эту проблему, я просто думаю, что этого не должно быть, потому что я следую руководству по рельсам.
Я следую руководству по началу работы с рельсами, поскольку в нем сказано, что я добавил действие index и show action. Так как в книге сказано, что с индексным действием, когда вы посещаете этот адрес / сообщения, вы должны видеть все сообщения, а когда вы создаете новое сообщение, оно будет перенаправлено, чтобы показать последнее сообщение, которое вы ввели,
Я использовал redirect_to @post, но это происходит с ошибкой, которую я застрял, тогда я использую redirect_to action: :show, id: @post.id
он работает, когда я создаю новый пост, затем он перенаправляется на /posts?id=last_inserted_id, но, как я видел, другой адрес каркаса должен быть posts/1 или т. д., и когда я посещаю /posts, он должен показывать все действия сообщений, определенные как индекс в контроллере .
routes.rb
<code>
Blog::Application.routes.draw do
root "welcome#new"
resource :posts
</code>
Контроллер:
class PostsController < ApplicationController
def index
@post = Post.all
respond_to do |format|
format.html #index.html.erb
end
end
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html #show.html.erb
end
end
def new
end
def create
@post = Post.new post_params
@post.save
redirect_to action: :show, id: @post.id
end
private
def post_params
params.require(:post).permit(:title, :message)
end
end
Спасибо
resources :posts
, вы также должны показывать свои маршруты. - person gotva   schedule 10.11.2013/posts/1
? а что вы видите в логе сервера (или вdevelopment.log
)? - person gotva   schedule 10.11.2013Couldn't find Post without an ID
? Опубликуйте свойroutes.rb
- потому чтоresources :posts
должен добавить маршрут для127.0.0.1:3000/posts/1
, и вы можете получить ошибкуPost with id=1 not found
, но неNo route matches...
- person gotva   schedule 10.11.2013