2012-01-05 3 views
0

маршрутов:Нет маршрута матчей при указании 'путь'

resources :news_items, :path => 'news', :as => 'news' do 
    collection do 
    get 'all' => 'news_items#news' 
    end 

контроллер:

def new 
    @news = NewsItem.new 
    @news.file_uploads.build 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @news } 
    end 
end 

форма:

<%= form_for(@news, :html => {:class=>'form-stacked', :multipart => true}) do |f| %> 
    <% if @news.errors.any? %> 

Когда я запускаю грабли маршруты

  all_news_index GET /news/all(.:format)     {:action=>"news", :controller=>"news_items"} 
      news_index GET /news(.:format)      {:action=>"index", :controller=>"news_items"} 
        POST /news(.:format)      {:action=>"create", :controller=>"news_items"} 
      new_news GET /news/new(.:format)     {:action=>"new", :controller=>"news_items"} 
      edit_news GET /news/:id/edit(.:format)   {:action=>"edit", :controller=>"news_items"} 
       news GET /news/:id(.:format)     {:action=>"show", :controller=>"news_items"} 
        PUT /news/:id(.:format)     {:action=>"update", :controller=>"news_items"} 
        DELETE /news/:id(.:format)     {:action=>"destroy", :controller=>"news_items"} 

Когда я иду в «/ Новости/Новый» я получаю:

No route matches {:path_prefix=>"news", :controller=>"news_items", :format=>nil} 

, когда я иду в «/ Новости/4/изменить» Я получаю:

No route matches {:path_prefix=>"news", :action=>"show", :controller=>"news_items", :format=>nil, :id=>#<NewsItem id: 4,... 
+0

Как зовут ваш контроллер и в каком файле он находится? – meagar

+0

@meagar NewsItemsController && news_items_controller.rb – LDK

ответ

0

Я думаю, что проблема с form_for(@news) линия.

Это создаст форму, для которой URL-адрес выведен классом @news.

Кажется, что это относится к классу NewsItem, поэтому он попытается связаться с news_items_path.

Необходимо явно указать URL-адрес.

form_for(@news, :url => news_path(@news)) 
+1

Это сработало лучше, так как я использую форму как для новых, так и для редактирования:: url => (@ news.id.nil? New_news_path: news_path (@news)). Спасибо за совет! – LDK

+0

изменить: вышеперечисленный 'new_news_path' должен быть 'news_index_path' – LDK

 Смежные вопросы

  • Нет связанных вопросов^_^