Аз съм нов в релсите и малко знам за ruby, току-що гледах урок от Rails Guide 4.0. Всичко вървеше добре, просто останах на една грешка: Не можах да намеря публикация без идентификатор.
Направих всичко както в Rails Guide Getting Started Of Rails.
Ето код от rails guide:
def show
@posts = Post.find(params[:id])
end
и ето кода за преглед:
<p>
<strong>Title:</strong>
<%= @posts.title %>
</p>
<p>
<strong>Text:</strong>
<%= @posts.text %>
</p>
След като това ръководство за кодови релси ви каже, че най-накрая трябва да можете да създавате нови публикации. Посетете localhost:3000/posts/new и опитайте!. Но след създаване на нова публикация ми показва грешка.
Мислех, че това може да е проблем, защото все още не съм създал действие за индексиране, така че приключих с индекса. След действието за индексиране, когато се опитам да посетя този адрес, обикновено той трябва да показва всички записи от базата данни, но по-скоро да показва запис, показващ същата грешка: Не може не намирам публикация без идентификатор
Опитах твърде много публикации в stackoverflow, но всички свързани с някои други действия, които не са полезни за мен.
Моля, помогнете ми да поправя този проблем, просто си мисля, че не трябва да е така, защото следвам ръководството за релси.
Следвам ръководството за започване на релси, тъй като каза, че добавих действие за индексиране и действие за показване. Така че, както в книгата се казва с действие за индексиране, когато посетите този адрес / публикации, трябва да видите всички публикации и когато създадете нова публикация, тя ще пренасочи, за да покаже последната публикация, която сте въвели,
Използвах 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