Можете ли вы помочь мне преобразовать этот маршрут в рельсы 3? - PullRequest
0 голосов
/ 03 апреля 2012

Я прочитал несколько сайтов и вопросов, но все были далеко за пределами моего уровня, кроме одного сайта:

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

Я пытаюсь следовать Head First Rails, который был создан для Rails 2, и пока все идет хорошо. До сих пор я смог найти конверсии, это действительно первое место после установки, чтобы поставить меня в тупик.

В файле config / rout.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

Первым делом в моем файле rout.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

Ничего из этого не сработало. Может кто-нибудь, пожалуйста, помогите мне здесь, я не уверен, что я делаю неправильно. У меня есть другая книга, Ruby On Rails 3 от Hartl, но в Индексе она даже ничего не показывает на Маршрутах, поэтому даже не знаю, где искать там.

Спасибо за любую помощь, которую вы можете предложить мне!

// РЕДАКТИРОВАТЬ - Я также пытался читать «/ 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

Также пробовал в том же файле:

class AdsController < ApplicationController
end
def show;
end

И каждый раз, когда я пытался идти к

  • локальный: 3000 / mebay / реклама / 3
  • локальный: 3000 / объявления / 3
  • локальный: 3000 / шоу / реклама / 3
  • локальный: 3000 / mebay / шоу / реклама / 3

По-прежнему та же ошибка «Ошибка маршрутизации. Нет маршрутов ...»

Ответы [ 4 ]

5 голосов
/ 03 апреля 2012
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 голосов
/ 27 июня 2012

Я также использую эту книгу и изучаю разницу между рельсами 2 и рельсами 3.

Я получил это на работу.В файле rout.rb все, что вам нужно сделать, это добавить это между do и end:

resources :ads

Ключ в том, что ваш файл rout.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 маршруты и файлы контроллеров, то увидите, что scaffold настраивает приложение rails 3 таким образом.Еще одна вещь, которая меня смутила, это то, что я смог заставить работать только javascript, поместив его в / app / assets / stylesheets и отредактировав application.html.erb и установив ссылку на таблицу стилей так:

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

Наслаждайтесь

1 голос
/ 22 апреля 2012

Попробуйте сделать этот файл маршрутов. У меня была такая же проблема, когда я делал это из главы 2 Head First Rails. Но это решило это для меня

    Mebay::Application.routes.draw do

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

    end
1 голос
/ 03 апреля 2012

Если вы используете Rails 3, вы не хотите делать учебник по Rails 2. Есть много хороших рельсов 3 учебника там. По вопросу маршрутов см. Сообщение в блоге ниже, которое может помочь вам разобраться в этом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...