2016-05-10 10 views
-1

У меня есть модель под названием 'links.' В routes.rb я определил его:Нет совпадений в маршруте [POST] "/ links/new"

resources :links 

У меня есть форма в/ссылки/новый выглядит следующим образом:

<%= form_for :links do |f| %> 

     <div class="form-group"> 
     <%= f.label :title %> 
     <%= f.text_field :title, class: "form-control" %> 
     </div> 

     <div class="form-group"> 
     <%= f.label :url %> 
     <%= f.url_field :url, class: "form-control" %> 
     </div> 

     <div class="form-group"> 
     <%= f.label :description %> 
     <%= f.text_area :description, class: "form-control" %> 
     </div> 

     <div class="form-group"> 
     <%= f.submit :"Create Link", class: "btn btn-primary" %> 
     </div> 

    <% end %> 

Когда я представить его, я получаю ошибку No route matches [POST] "/links/new" даже хотя это находится в списке маршрутов:

new_link_path GET /links/new(.:format) links#new 

В чем проблема?

+0

В соответствии с Rails именования, название модели должно быть вырожденной т.е. 'Link' – dp7

+0

@dkp Этого названия модели, жаль, что я неправильно набран – GOAT

ответ

0

Попробуйте это:

<%= form_for(Link.new) do |f| %> 
    <div class="form-group"> 
    <%= f.label :title %> 
    <%= f.text_field :title, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :url %> 
    <%= f.url_field :url, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :description %> 
    <%= f.text_area :description, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.submit "Create Link", class: "btn btn-primary" %> 
    </div> 
<% end %> 
+0

Это работало, Спасибо! – GOAT

0

добавить новый метод маршрута в контроллер контроллер

def new 
    @link = Link.new 
    end 

Когда вы побываете в ссылки/новый, то новый метод маршрута будет вызывать и сделать ссылки/новый шаблон. поэтому добавьте ниже код в tamplete

<% form_for(:link, @link, :url => {:action => 'create'}) do |f| %> 
     <div class="form-group"> 
     <%= f.label :title %> 
     <%= f.text_field :title, class: "form-control" %> 
     </div> 

    <div class="form-group"> 
     <%= f.label :url %> 
     <%= f.url_field :url, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :description %> 
    <%= f.text_area :description, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.submit "Create Link", class: "btn btn-primary" %> 
    </div> 
<% end %> 

и ручка создания запроса в создании действия контроллера линии

def create 
    @link = Link.new params[:link] 
    if @link.save 
     redirect_to :action => 'show', :id => @link.id 
    else 
     render :action => 'new' 
    end 
    end 

не забудьте разрешить Params для связи в контроллере. это правильный способ, чтобы создать новую запись в RoR

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