rails scaffold news — как?

    Комрады, как реализовать скаффолд с симпатичным урлом "/news/"?

    Если честно я уже замучался, если обозвать все это дело «new», дабы рельсы просклоняли до множественного числа, то будет так:
    NameError in News#index

    Showing app/views/news/index.html.erb where line #24 raised:

    undefined local variable or method `new_new_path' for #<ActionView::Base:0xf711a204>

    Extracted source (around line #24):

    21:
    22:
    23:
    24: <%= link_to 'New new', new_new_path %>

    RAILS_ROOT: /home/tenkoff/rails/test
    Application Trace | Framework Trace | Full Trace

    app/views/news/index.html.erb:24
    app/controllers/news_controller.rb:7:in `index'



    Если сделать попытаться дать другое имя и завернуть роутами, то будет так
    script/generate scaffold post title:string
    и в роутах написать следующее:
    map.resources :lenta, :controller => :posts

    то все ссылки будут на "/posts/"

    Как это все победить?
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 10

      +1
      script/generate scaffold News title:string
        0
        rake routes вам в помощь ;)
          0
          К сожалению это не работает
          habrahabr.ru/blogs/starting_programming/50085/#comment_1314727
          Так же как и сделать табличку руками сделать модель и потом сгенерить скафолд, результат не айс
            0
            проверено на
            Rails 2.2.2

            я бы не стал писать в противном случае
              0
              map.connect '/news', :controller => 'news', :action => 'index', :method => 'get'
              map.connect '/news/new', :controller => 'news', :action => 'new', :method => 'get'
              map.connect '/news', :controller => 'news', :action => 'create', :method => 'post'
              map.connect '/news/:id', :controller => 'news', :action => 'show', :method => 'get'
              map.connect '/news/:id/edit', :controller => 'news', :action => 'edit', :method => 'get'
              map.connect '/news/:id', :controller => 'news', :action => 'edit', :method => 'put'
              map.connect '/news/:id', :controller => 'news', :action => 'new', :method => 'delete'

              это так точно решит ваши проблемы
                0
                Ну я выкинул все остальные роуты дефолтные, теперь выдает другую ошибку:

                NoMethodError in News#new

                Showing app/views/news/new.html.erb where line #3 raised:

                undefined method `news_path' for #<ActionView::Base:0xf71c5870>

                Extracted source (around line #3):

                1: New news
                2:
                3: <% form_for(@news) do |f| %>
                4: <%= f.error_messages %>
                5:
                6:
          –3
          $ ruby --version
          ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]
          $ gem --version
          1.3.1
          $ rails --version
          Rails 2.2.2

          $ rails -d mysql test

          $ cd test/ && rake db:create
          $ script/generate scaffold News title:string

          warning Plural version of the model detected, using singularized version. Override with --force-plural.
          exists app/models/
          exists app/controllers/
          exists app/helpers/
          create app/views/news
          exists app/views/layouts/
          exists test/functional/
          exists test/unit/
          exists public/stylesheets/
          create app/views/news/index.html.erb
          create app/views/news/show.html.erb
          create app/views/news/new.html.erb
          create app/views/news/edit.html.erb
          create app/views/layouts/news.html.erb
          create public/stylesheets/scaffold.css
          create app/controllers/news_controller.rb
          create test/functional/news_controller_test.rb
          create app/helpers/news_helper.rb
          route map.resources :news
          dependency model
          exists app/models/
          exists test/unit/
          exists test/fixtures/
          create app/models/news.rb
          create test/unit/news_test.rb
          create test/fixtures/news.yml
          create db/migrate
          create db/migrate/20090124224453_create_news.rb

          $ rake db:migrate
          (in /home/amir/rails/test)
          == CreateNews: migrating =====================================================
          — create_table(:news)
          -> 0.0068s
          == CreateNews: migrated (0.0070s) ============================================

          $ script/server
          => Booting Mongrel (use 'script/server webrick' to force WEBrick)
          => Rails 2.2.2 application starting on 0.0.0.0:3000
          => Call with -d to detach
          => Ctrl-C to shutdown server
          ** Starting Mongrel listening at 0.0.0.0:3000
          ** Starting Rails with development environment…
          ** Rails loaded.
          ** Loading any Rails specific GemPlugins
          ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
          ** Rails signals registered. HUP => reload (without restart). It might not work well.
          ** Mongrel 1.1.5 available at 0.0.0.0:3000
          ** Use CTRL-C to stop.

          $ curl localhost:3000/news/new

          В консоле где запущены рельсы, следюущее:

          Processing NewsController#new (for спрятал ip-шник at 2009-01-24 22:46:24) [GET]
          SQL (0.1ms) SET NAMES 'utf8'
          SQL (0.0ms) SET SQL_AUTO_IS_NULL=0
          News Columns (0.7ms) SHOW FIELDS FROM `news`
          Rendering template within layouts/news
          Rendering news/new

          ActionView::TemplateError (news_url failed to generate from {:controller=>«news», :action=>«show»} — you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: [«news», :id] — are they all satisfied?) on line #3 of app/views/news/new.html.erb:
          1: New news
          2:
          3: <% form_for(@news) do |f| %>
          4: <%= f.error_messages %>
          5:
          6: /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/routing/route_set.rb:381:in `raise_named_route_error'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/routing/route_set.rb:341:in `generate'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/url_rewriter.rb:208:in `rewrite_path'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/url_rewriter.rb:187:in `rewrite_url'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/url_rewriter.rb:165:in `rewrite'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:626:in `url_for'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/url_helper.rb:85:in `send'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/url_helper.rb:85:in `url_for'
          (eval):16:in `news_path'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/polymorphic_routes.rb:112:in `__send__'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/polymorphic_routes.rb:112:in `polymorphic_url'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/polymorphic_routes.rb:119:in `polymorphic_path'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/form_helper.rb:269:in `apply_form_for_options!'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/form_helper.rb:248:in `form_for'
          app/views/news/new.html.erb:3
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/renderable.rb:39:in `send'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/renderable.rb:39:in `render'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/template.rb:73:in `render_template'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:256:in `render'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:367:in `_render_with_layout'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:254:in `render'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1174:in `render_for_file'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:905:in `render_without_benchmark'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:51:in `render'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/benchmark.rb:8:in `realtime'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:51:in `render'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:135:in `send'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:135:in `custom'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:160:in `call'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:160:in `respond'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:158:in `each'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:158:in `respond'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/mime_responds.rb:107:in `respond_to'
          app/controllers/news_controller.rb:29:in `new'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `send'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:617:in `call_filters'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
          /usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/rescue.rb:136:in `perform_action_without_caching'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
          /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
          /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/query_cache.rb:8:in `cache'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `send'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `process_without_filters'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/session_management.rb:134:in `process'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:392:in `process'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:183:in `handle_request'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:123:in `dispatch'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `synchronize'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `dispatch'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
          /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:39:in `dispatch'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/rails.rb:76:in `process'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/rails.rb:74:in `synchronize'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/rails.rb:74:in `process'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:282:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `each'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:128:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/command.rb:212:in `run'
          /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load_without_new_constant_marking'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:142:in `load'
          /usr/local/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/servers/mongrel.rb:64
          /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
          /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
          /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
          /usr/local/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
          /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
          /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
          script/server:3

          • UFO just landed and posted this here
              0
              ну news он и так не сможет просколнять, я пробовал добавлением :singular => 'news_instance'
              и даже удачно заменил некоторые ссылки, но возникала проблема построения ссылки к списку новостей
              0
              не, ничего не помогает, на чем-то в итоге валится, даже если я переписываю все на news_instance в итоге ломается метод edit

              Only users with full accounts can post comments. Log in, please.