我有一个帮助台控制器,可以控制诸如Guides模型之类的模型。我试图在helpdesk / new创建一个创建页面但是我似乎遇到了一些路由错误。我确定这是一个简单的错误,所以任何帮助都会受到赞赏:)
服务台/ new.html.erb
<%= form_for @guide do |guide| %>
<%= guide.text_field :title %>
<%= guide.text_area :content %>
<%= guide.text_field :youtube %>
<%= guide.submit %>
<% end %>
路线
resources :helpdesk
帮助台控制器
def new
@guide = Guide.new
end
def create
@guide = Guide.create(guide_params)
if @guide.save
format.html { redirect_to root_path, notice: 'Post was successfully created.' }
format.json { }
else
format.html { redirect_to root_path, notice: 'Post was successfully created.' }
format.json { }
end
end
指南模型
class Guide < ActiveRecord::Base
end
错误:
undefined method `guides_path' for #<#<Class:0x7512d98>:0x72f3a80>
在线:
<%= form_for @guide do |guide| %>
答案 0 :(得分:1)
第resources :helpdesk
行将为您创建以下路线:
GET /helpdesks
GET /helpdesk/new
POST /helpdesks
GET /helpdesk/:id
GET /helpdesk/:id/edit
PATCH /helpdesk/:id
DELETE /helpdesk/:id
通过将form_for
帮助器与名为@guide
的实例化新对象一起使用,Rails magic希望您拥有一个指南资源,而不是帮助台资源。
您可以修改form_for以包含您希望表单发布的网址,以便修改为:
<%= form_for @guide, url: helpdesks_path do |f| %>
这会将表单发布到相关的创建路由。您需要对编辑操作执行类似操作。
答案 1 :(得分:0)
您应该GuidesController
来控制Guide
模型。但是如果您已设置它,那么您可以设置要使用的网址。 Rails会查找guides_path
,因为它是Guide
模型
<%= form_for @guide, url: helpdesk_path do |guide| %>
答案 2 :(得分:0)
你应该添加:
resources :guides
到config/routes.rb
文件,你应该好好去
答案 3 :(得分:0)
你应该有GuidesController
@japed说,但是对于这种情况,请在config/routes.rb
中尝试:
resources :guides, controller: :helpdesk