没有路线匹配[POST]“/ links / new”

时间:2016-05-10 15:44:32

标签: ruby-on-rails crud

我有一个名为'链接'的模型。在routes.rb中,我用以下内容定义了它:

resources :links

我在/ links / new中有一个表单,如下所示:

    <%= 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

有什么问题?

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:0)

在控制器控制器中添加新路由方法

def new
    @link = Link.new
  end

当您访问links / new时,新路由方法将调用并呈现链接/新模板。所以在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

中创建新记录的正确方法