2008-10-21 27 views
5

Tôi có một câu hỏi thực sự đơn giản ở đây nhưng tôi không thể tìm thấy câu trả lời ở bất cứ đâu. Tôi đoán một số vấn đề xuất phát từ tôi sau một hướng dẫn cho Rails 1.2 với Rails 2.1. Dù sao ..Rails bỏ qua kết xuất và chuyển hướng_to

Tôi đang viết hệ thống blog và tôi đang triển khai bit nhận xét. Tôi có bình luận hiển thị tốt một khi tôi đã tạo ra chúng bằng cách sử dụng kịch bản/giao diện điều khiển, nhưng nhận được hình thức bình luận chính nó làm việc là bit cứng.

Trong posts_controller.rb Tôi có

def comment 
    Post.find(params[:id]).comments.create(params[:comment]) 
    flash[:notice] = "Added comment" 
    #render :action => show 
    redirect_to :action => show 
    end 

và trong show.html.erb (quan điểm) Tôi có

<%= form_tag :action => "comment", :id => @post %> 
    <%= text_area "comment", "body" %><br> 
    <%= submit_tag "Post Comment" %> 

Khi tôi gửi biểu mẫu nó cố gắng để đi đến URB/bài đăng/nhận xét/1 rõ ràng là không chính xác và nó phàn nàn rằng nó không thể tìm thấy mẫu. Rõ ràng là tôi không muốn một mẫu ở đó bởi vì tôi đã nói với nó để chuyển hướng đến hành động hiển thị bởi vì tôi muốn nó chỉ hiển thị lại trang hiển thị của bài đăng, với nhận xét mới ở đó.

Tôi đã thử cả dòng nhận xét (render: action => show) và đường redirect_to và dường như không làm gì cả.

Tôi chắc chắn rằng tôi thiếu thứ gì đó đơn giản, nhưng nó là gì?

Trả lời

8

redirect_to :action => 'show', :id => params[:id] có trích dẫn xung quanh công việc hiển thị không?

-1

có, bạn sử dụng kiểu đường ray cũ.

Something mới:

form_for :comment, :url => { :post_id => @post } do |f| 
    f.text_area :body 
    submit_tag "Post" 
    end 

bạn có thể sử dụng các nguồn lực cho bài viết và bình luận, tìm kiếm google cho hướng dẫn tốt hơn hoặc cài đặt đường ray 1.2.6:

gem install -v 1.2.6 rails 
0

Rails 2.1 bao trùm "tài nguyên RESTful". show chỉ xảy ra là tên của một trong các hành động REST được xác định trước mà tất cả các bộ điều khiển đường ray sử dụng.

Rails thực hiện một số phép thuật đằng sau hậu trường và: hiển thị tương đương với "hiển thị phần tử cụ thể này với một ID cụ thể". Nghe có vẻ như nó bị lẫn lộn với điều đó. ID có thể là mặc định thành "1". Do đó URL được tạo ra bạn nhìn thấy từ render gọi

Các Rails 2.1 cách để thực hiện nó sẽ sử dụng các hành động và các mẫu sau:

  • index - hiển thị danh sách đầy đủ các ý kiến ​​
  • create - thêm nhận xét mới
  • show - chỉ hiển thị một nhận xét cụ thể (không phải danh sách đầy đủ). Không có âm thanh như thế này là những gì bạn muốn, nhưng "ma thuật" bên trong đường ray sẽ mặc định này.

Ngoài ra còn có những hành động cho new (chương trình nhằm vào một lời nhận xét mới) edit (chương trình nhằm làm một biên tập của một bình luận hiện có) update (cập nhật trình xử lý) và destroy (duh), nhưng nó doesn' Có vẻ như bạn sẽ sử dụng chúng trong ví dụ này.

Bạn có liên kết đến hướng dẫn không? Sẽ không quá khó để chuyển nó sang phong cách Rails 2.1.

+0

Hướng dẫn có tại http://www.sapphiresteel.com/How-To-Create-A-Ruby-On-Rails-Blog,168. Tôi cũng đã đăng một câu hỏi khác về loại sự cố này http://stackoverflow.com/questions/224669/correct-rails-21-way-of-doing-things – robintw

Các vấn đề liên quan