2013-07-01 43 views
5

Tôi lập trình cho lần đầu tiên trong ruby ​​và vì vậy tôi đang làm 'bắt đầu' hướng dẫn từ trang web chính thức:Rails bắt đầu 5,7

http://guides.rubyonrails.org/getting_started.html

Tôi có một vấn đề với 5.7. Hướng dẫn cho biết:

Nếu bạn gửi lại biểu mẫu ngay bây giờ, Rails sẽ khiếu nại về việc không hiển thị . Tuy nhiên, điều đó không hữu ích lắm, vì vậy hãy thêm hành động hiển thị trước khi tiếp tục.

Và sau đó là đoạn mã sau:

bài GET /posts/:id(.:format) bài viết # show

Nhưng nơi nào tôi phải đặt mã này ?

Cảm ơn!

Trả lời

6

Điều bạn đã mô tả là thành viên show cho các tuyến tài nguyên posts. Nó không thực sự là mã, mà là một mẫu cho định tuyến URL. Bạn có thể xem tất cả tuyến đường của mình theo cách này bằng cách nhập rake routes từ dòng lệnh.

Breaking xuống các tuyến đường:

post GET /posts/:id(.:format) posts#show 
# `post` => named route name (available by default only to singular routes) 
# `GET` => HTTP method 
# `/posts/:id(.:format)` => path made accessible by route 
# :id => specifies that the argument passed in as `:id` is available to the controller as `params[:id]` 
# `posts#show` => controller is `posts`, action is `show` 

Bạn cần phải tạo ra một tương ứng với hành động show điều khiển rằng con đường sẽ ánh xạ:

# app/controllers/posts_controller.rb 
def show 
    @post = Post.find(params[:id]) 
end 
+0

ok, tôi đã làm điều này. Nhưng sau đó, hướng dẫn nói để thêm mã đó nhưng không nói ở đâu ... –

+1

Tài liệu đọc: 'hãy thêm hành động hiển thị trước khi tiếp tục'. Nó đề cập đến hành động 'show' của bộ điều khiển' posts'. Nó là __not__ đề cập đến dòng sau, mà thậm chí không phải là mã. – zeantsoi

+0

Cảm ơn bạn, tôi đã tìm thấy một vấn đề khác và bây giờ mà tôi đã cố định, tất cả mọi thứ hoạt động. –

1

Nếu bạn có PostsController trong ứng dụng của bạn, sau đó bạn phải có các thông tin sau trong config/routes.rb

resources :posts 

Vì vậy, nó sẽ tạo ra 7 tuyến mặc định cho bộ điều khiển bài viết, nơi hiển thị là một hành động mặc định.

Khi bạn làm rake routes trong bảng điều khiển của mình, nó sẽ hiển thị cho bạn tất cả các tuyến đường cho ứng dụng của bạn. Từ các tuyến đường đó, bạn có thể nhận được

post GET /posts/:id(.:format)      posts#show 

Ở trên là các tuyến đường, chứ không phải mã. Vì vậy, nó nói rằng bạn có một bộ điều khiển tên là "bài viết" và "hiển thị" là một hành động của nó. Có thể truy cập thông qua '/ posts /: id' bằng phương thức "get".

+1

OP đã chỉ ra rằng họ đã đạt mục 5.7 của hướng dẫn. Có lẽ, họ sẽ đã thêm 'resources: posts', vì điều này được xác định trong phần 5. – zeantsoi

2

Tôi vừa gặp phải vấn đề tương tự như vậy thông qua hướng dẫn. Một câu trả lời trực tiếp hơn cho câu hỏi này là "không đâu". Tham chiếu đến dòng đó trong hướng dẫn chỉ là thông tin. Nó đọc theo cách dẫn bạn tin rằng bạn có nghĩa vụ phải thêm nó nhưng không có gì để thêm vào. Chỉ cần tiếp tục đi qua phần còn lại của hướng dẫn và tất cả sẽ tốt. Có lẽ một ngày nào đó tác giả sẽ đọc và sửa nó.

2

Thêm sau câu (in đậm) sẽ làm cho các hướng dẫn trong 5,7 rõ ràng hơn:

Nếu bạn gửi biểu mẫu một lần nữa bây giờ, Rails sẽ phàn nàn về việc không tìm action show. Tuy nhiên, điều đó không hữu ích lắm, vì vậy hãy thêm hành động hiển thị trước khi tiếp tục.chạy 'kết quả cào routes`now trong những điều sau đây:

post GET /posts/:id(.:format) posts#show

1

Hãy chắc chắn rằng khu vực tư nhân đưa ra sau khi khối def chương

class PostsController < ApplicationController 

def new 
end 

def create 
    #render text: params[:post].inspect 
    @post = Post.new(post_params) 

    @post.save 
    redirect_to @post 
end 

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

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

end 
0

Không có gì cần phải được thêm vào tập tin cấu hình, như một số người đã nói, là thông tin xuất hiện sau khi chạy lệnh

các tuyến đường rake

Chỉ cần thêm hiển thị hành động cho post_controller.rb và xem show.html.erb là đủ để có thể gửi các thông tin và tiếp tục với ví dụ.