我有一个名为'链接'的模型。在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
有什么问题?
答案 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
中创建新记录的正确方法