Tôi biết đây là một câu hỏi tầm thường. Nhưng tôi đã tìm kiếm trên google nhưng không thể tìm thấy một câu trả lời đơn giản cho câu hỏi này.Ruby on Rails: Cách in ra một chuỗi và nó hiển thị ở đâu?
Về cơ bản tôi có một dòng mà nói <%= link_to 'Run it', :method => 'doIt' %>
trong giao diện, sau đó trong bộ điều khiển tương ứng, tôi có phương pháp doIt
như sau:
def doIt
puts "Just do it"
end
Tôi chỉ muốn kiểm tra xem nếu tôi bấm vào Run nó, nó sẽ xuất chuỗi "Chỉ cần làm điều đó". Tôi chạy này trên localhost và không có lỗi, nhưng tôi không thể tìm thấy đầu ra "Chỉ cần làm điều đó" bất cứ nơi nào. Nó không được hiển thị trong bảng điều khiển đường ray hoặc nhật ký máy chủ đường ray. Tôi chỉ muốn biết nơi nào đặt đầu ra chuỗi, nơi để tìm thấy nó?
Vòng 2: Vì vậy, đây là những gì tôi đã cố gắng ....
gia tăng dòng này trong index.html.erb (mà là gốc rễ)
<%= link_to 'Run it', :method => 'do_it' %>
và trong url, nó chỉ là về cơ bản http://localhost:3000/ (vì i route controller # index dưới dạng root)
Màn hình chỉ là một gạch chân 'Chạy nó' liên kết đến 'do_it 'phương pháp trong bộ điều khiển.
Trong bộ điều khiển, tôi bao gồm phương pháp này
def do_it
logger.debug "Just do it"
end
khi tôi bấm vào 'Run nó, sự thay đổi url để http://localhost:3000/gollum_starters?method=do_it và trong development.log, sau đây được viết vào nó:
Started GET "/gollum_starters?method=do_it" for 127.0.0.1 at 2011-08-25 15:27:49 -0700
Processing by GollumStartersController#index as HTML
Parameters: {"method"=>"do_it"}
[1m[35mGollumStarter Load (0.3ms)[0m SELECT "gollum_starters".* FROM "gollum_starters"
Rendered gollum_starters/index.html.erb within layouts/application (3.6ms)
Completed 200 OK in 16ms (Views: 7.7ms | ActiveRecord: 0.3ms)
Ngoài ra, tôi đã thử tất cả logger.error/info/fatal/etc ... và Rails.logger.error/info/fatal/etc, tất cả đều không in ra dòng "Chỉ cần làm" trong quá trình phát triển đăng nhập
@Paul: Tôi không chạm vào thư mục hoặc tệp môi trường, tôi giả định theo mặc định khi một ứng dụng đường ray mới được tạo, nó đang được phát triển?
@Maz: Có bạn đúng, tôi chỉ đang thử kiểm tra xem phương thức do_it có được gọi hay không. Để làm điều đó, tôi chỉ muốn in một cái gì đó ra trong bộ điều khiển. Không thể nghĩ ra bất kỳ cách nào đơn giản hơn mà chỉ cần in ra một chuỗi, nhưng vấn đề này khiến tôi khốn khổ. Tôi chỉ sử dụng textmate, không có IDE.
Vòng 3:
@ Paul thx rất nhiều, nhưng tôi gặp phải lỗi
file các tuyến đường của tôi bây giờ là:
resources :gollum_starters
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
index.html.erb của tôi bây giờ là :
<%= link_to "Do it", do_it_path %>
Gollum_starters_controller của tôi.rb
def do_it
logger.debug 'Just do it'
end
Tôi nhận được lỗi này:
Couldn't find GollumStarter with ID=do_it
lỗi là ở đây, 2nd dòng:
def show
@gollum_starter = GollumStarter.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @gollum_starter }
end
end
Tôi tự hỏi tại sao nó lộ trình để hiển thị? Khi tôi nhấp vào do_it, nó thực sự đi đến localhost: 3000/gollum_starters/do_it đó là chính xác, nhưng dường như các lỗi điểm đến phương pháp hiển thị?
Vòng 4:
@ Paul, tôi chuyển nguồn: gollum_starters xuống:
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
resources :gollum_starters
nhưng đã nhận lỗi này (omg tôi muốn giết bản thân mình),
Template is missing
Missing template gollum_starters/do_it with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "~/project_name/app/views"
:/
---------- trả lời để Round 4 ------------
Về cơ bản như lỗi giải thích, không có mẫu (tức là một trang web) để hiển thị lỗi do đó bị ném. Giải pháp là thêm một redirect_to, trong trường hợp này tôi chuyển hướng đến root_url.
def do_it
logger.debug 'Just do it'
redirect_to(root_url)
end
Mọi thứ hoạt động ngay bây giờ, "Chỉ cần làm điều đó" cuối cùng kết quả đầu ra cho development.log và bảng điều khiển máy chủ đường ray.
Cảm ơn bạn Maz và Paul và Andrew đã giúp tôi. Học được rất nhiều.
John, xem giải thích được thêm bên dưới. Bạn đang thiếu ý tưởng cốt lõi của REST trong Rails, và bạn sẽ hạnh phúc hơn nhiều với đường ray nếu bạn hiểu nó. Chúc may mắn :) – Andrew
Yup nhìn vào nó, nhờ giải thích chi tiết –