我的应用程序中有一个名为 CalendarEntry 的模型,应该保留条目博客的数据。
CalendarEntry是管理员角色,因此路由如下:
/admins/calendar_entries
和我的 route.rb 是这样:
namespace :admins do
resources :calendar_entries
end
但是以某种方式,当我使用以下代码在控制器中调用实体时:
@entry = CalendarEntry.new(params[:calendar_entries])
我收到一条错误的路线,内容为:
undefined method `calendar_entries_path' for #<#<Class:0x007fdc6adfe4d8>:0x007fdc6f70aeb0>
如果我将CalendarEntry放在管理员的命名空间中,那我不应该得到以下路线:
admins_calendar_entries_path
??
这对我来说很重要,路由可以,但是我的实体以某种方式获得了不同于route.rb的另一条路由,有人知道为什么吗?或者,也许除了路由之外,我还必须指定CalendarEntry的路由?还是正确的路径是什么?
我感谢每一个答复!
更新7月16日-下午3:18
我控制器的完整代码是:
module Admins
# Class for Entries
class CalendarEntriesController < ApplicationController
before_action :authenticate_admin!
def index; end
def new
@entry = CalendarEntry.new(params[:calendar_entries])
end
end
end
我的完整路线是:
admins_calendar_entries GET /admins/calendar_entries(.:format) admins/calendar_entries#index
POST /admins/calendar_entries(.:format) admins/calendar_entries#create
new_admins_calendar_entry GET /admins/calendar_entries/new(.:format) admins/calendar_entries#new
edit_admins_calendar_entry GET /admins/calendar_entries/:id/edit(.:format) admins/calendar_entries#edit
admins_calendar_entry GET /admins/calendar_entries/:id(.:format) admins/calendar_entries#show
PATCH /admins/calendar_entries/:id(.:format) admins/calendar_entries#update
PUT /admins/calendar_entries/:id(.:format) admins/calendar_entries#update
DELETE /admins/calendar_entries/:id(.:format) admins/calendar_entries#destroy
答案 0 :(得分:1)
我的问题在注释中得到解决,事实证明我的错误是由我的观点引起的,我有一个简单的形式,如下所示:
<%= simple_form_for @entry do |f| %>
# Inputs fields
<% end %>
但是问题是我必须指定要调用的名称空间,所以我这样做是这样的:
<%= simple_form_for [:admins, @entry] do |f| %>
# Inputs fields
<% end %>
寓言中的道德感:并非所有事物看上去都是如此