Ruby on rails Rails:来自不同控制器的访问模型
我知道以前有人问过这个问题,他们说“模型独立于控制器”。所以,按照我为其他模型编写的相同代码,我只是重命名了我的工作代码,以适应我的新模型。但是我得到一个错误Ruby on rails Rails:来自不同控制器的访问模型,ruby-on-rails,ruby,Ruby On Rails,Ruby,我知道以前有人问过这个问题,他们说“模型独立于控制器”。所以,按照我为其他模型编写的相同代码,我只是重命名了我的工作代码,以适应我的新模型。但是我得到一个错误未定义的方法“userimages\u path”这里是我正在使用的代码 模型为userimage,控制器为uploads 控制器/上传\u Controller.rb def new @userimage = Userimage.new end Model/userimag
未定义的方法“userimages\u path”
这里是我正在使用的代码
模型为userimage
,控制器为uploads
控制器/上传\u Controller.rb
def new
@userimage = Userimage.new
end
Model/userimage.rb是一个空文件
Views/uploads/new.html.erb(此行抛出错误。) 我多次使用
rakedb:migrate
来确保我确实迁移了数据库,我认为这可能是它找不到Userimage
的原因
我在这里做错了什么/遗漏了什么?这是Rails的魔法,当您不为
表单指定第二个选项(url
)时,Rails会尝试设置它,在您的路由中,
由Rails转换为
,没有这样的\u路径
助手。
要解决此问题,请运行bundle rake routes
并设置正确的url
选项
请尝试以下代码:
看法
您能否显示覆盖用户映像的模式文件/迁移?您能否确认您的模型是Userimage
而不是Userimage
?create_table“userimages”,force::cascade do | t | t.text“description”t.string“title”t.datetime“created_at”,null:false t.datetime“updated_at”,null:false end
我查看了模型和其他每个文件,发现它是Userimages而不是Userimages。对我来说,Rails是一种陌生的技术。我印象深刻的是,它能自动为我做很多事情,而且只需要更少的代码。。。。哦,哦!我的灯泡刚刚亮了!所以rails是根据model/crud而不是controller/crud?进行路由的。很有趣。它起作用了!!我搞不懂它为什么要寻找userimages\u路径。认为以表单形式发送到新的上传是足够聪明的,所以我不想看那里!标记为答案!非常感谢。
<%= form_for @userimage do |f|%>
resources :uploads
<%= form_for @userimage, url: "/uploads" do |f|%>
def create
...
end