簡體   English   中英

您能幫我將此路線轉換為Rails 3嗎?

[英]Can you help me convert this route to rails 3?

我閱讀了一些網站和問題,但是除了一個網站,所有內容和問題都超出了我的水平:

http://markconnell.co.uk/posts/2010/02/rails-3-routing-examples

我正在嘗試遵循為Rails 2制作的Head First Rails,到目前為止,它已經進行得足夠好了。 到目前為止,我已經能夠找到轉換,這確實是自安裝以來使我難堪的第一站。

它在config / routes.rb文件中表示應讀取:

ActionController::Routing::Routes.draw do |map|
  map.connect '/ads/:id', :controller=>'ads', :action=>'show'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

首先我的routes.rb文件默認第一行是

Mebay::Application.routes.draw do

所以我的第一次嘗試是:

Mebay::Application.routes.draw do
  map.connect '/ads/:id', :controller=>'ads', :action=>'show'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

當失敗時,我嘗試了以下方法:

Mebay::Application.routes.draw do'
map '/ads/:id' => 'ads#index'
end

然后我嘗試了同樣的事情,但是添加了| map |。 到第一行。

最后,我嘗試將其全部更改為:

ActionController::Routing::Routes.draw do |map|
map '/ads/:id' => 'ads#index'
end

這些都不起作用。 有人可以在這里幫我嗎,我不確定我做錯了什么。 我還有另一本書,Hartl的Ruby On Rails 3,但在Index中它甚至沒有在Routes上顯示任何內容,因此甚至不知道在哪里可以看到。

感謝您能為我提供的任何幫助!

//編輯-我也嘗試過閱讀'/ ads /':id,認為這可能是一個錯誤,因為對我而言,為什么:id不能用引號引起來。

//編輯2-這是Rake Routes返回的內容:

WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
at /Users/Dennis/.rvm/gems/ruby-1.9.2-p318@rails3tutorial/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated.  Please include
...  Rake::DSL into classes and modules which use the Rake DSL methods
WARNING: DSL method Mebay::Application#task called at /Users/Dennis/.rvm/gems/ruby-1.9.2-p318@rails3tutorial/gems/railties-3.0.1/lib/rails/application.rb:214:in `initialize_tasks'
/ads/:id(.:format)                 {:controller=>"ads", :action=>"show"}
/:controller/:action/:id(.:format) 
/:controller/:action/:id.:format   

錯誤信息:

路由錯誤

沒有路線匹配“ / ads / 3”

//編輯3-這是我的2個控制器文件的樣子:

ads_controller:

class AdsController < ApplicationController
end

application_controller:

class ApplicationController < ActionController::Base
protect_from_forgery
end

//編輯4-

在ads_controller.rb文件中嘗試過:類AdsController <ApplicationController def show; 結束

還嘗試在同一文件中:

class AdsController < ApplicationController
end
def show;
end

我嘗試的每種方式

  • 本地主機:3000 / mebay / ads / 3
  • 本地主機:3000 / ads / 3
  • 本地主機:3000 / show / ads / 3
  • 本地主機:3000 / mebay / show / ads / 3

同樣的錯誤仍然是“路由錯誤。沒有路由匹配...”

ActionController::Routing::Routes.draw do 
  match '/ads/:id' => 'ads#show'
  match ':controller/:action/:id'
  match ':controller/:action/:id.:format'
end

我完全建議閱讀文檔: http : //apidock.com/rails/ActionDispatch/Routing

我也正在使用那本書,並探討了導軌2和導軌3之間的區別。

我有這個工作。 在routes.rb文件中,您需要做的就是在do和end之間添加以下內容:

resources :ads

關鍵是您的routes.rb文件只會將該資源發送到正確的位置。 下一個要查找的地方是ads_controller.rb文件,您將在其中添加以下內容:

 #Get /ads/1
 #Get /ads/1.json

  def show
    @ad = Ad.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @ad }
    end
  end

下一部分是添加索引,該索引在該章的后面。 您需要在上面添加以下內容:

# GET /ads
# GET /ads.json
 def index
  @ads = Ad.all

        respond_to do |format|
          format.html # index.html.erb
          format.json { render json: @ad }
        end
      end

基本上,如果您看一下第1章route.rb和控制器文件,您會看到腳手架會像這樣配置Rails 3應用程序。 讓我感到困惑的另一件事是,我只能通過將JavaScript放到/ app / assets / stylesheets中並編輯application.html.erb並將樣式表鏈接設置為這樣來使其正常工作:

<%= stylesheet_link_tag    "application", :media => "default.css" %>

請享用

嘗試將此作為您的Routes文件。 在《 Head First Rails》第二章中,我遇到了同樣的問題。 但這為我解決了

    Mebay::Application.routes.draw do

       controller 'ads' do
               match 'ads/:id' => :show
       end

    end

如果您使用的是Rails 3,則不想編寫Rails 2教程。 有很多不錯的rails 3教程。 有關路線的問題,請參見下面的博客文章,這可能有助於您解決問題。

http://gregmoreno.wordpress.com/2010/08/12/rails-3-upgrade-part-2-routes/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM