Rails的:从不同的控制器访问模型
我知道这个问题已经问之前,他们说“模型是独立的控制器。”所以,遵循我为其他模型所做的相同代码,我只是将我的工作代码重新命名为适合我的新模型。但我得到一个错误undefined method 'userimages_path'
在这里我使用的代码。Rails的:从不同的控制器访问模型
该模型是userimage
和控制器是uploads
。
控制器/ uploads_controller.rb
def new
@userimage = Userimage.new
end
型号/ userimage.rb是一个空文件
查看/上传/ new.html.erb(这条线被投掷的误差。 )
<%= form_for @userimage do |f|%>
在我的routes.rb
resources :uploads
我有rake db:migrate
几次,以确保我没有迁移数据库想这可能是为什么它不能找到Userimage
。
我我做错/缺少在这里?
这是Rails的魔力,当你不指定form_for
秒选项(url
),Rails的尝试<%= form_for @userimage do |f|%>
将通过Rails的设置,你的情况来<%= form_for @userimage, url: userimages_path do |f|%>
,在你的路线,有没有这样的_path
帮手。 要解决此问题,运行bundle rake routes
并设置正确url
选项。
对我来说,Rails是外星人的技术。我对它自动为我做了多少事情感到印象深刻,它只是用更少的代码工作。哦,哦!我的灯泡刚刚亮起来!所以铁轨是根据模型/粗糙而不是控制器/粗糙的路线?有趣的。有用!!我神秘的为什么它正在寻找userimages_path。认为这是足够聪明的路由到form_for new_uploads,所以我没有想到看那里!标记为答案!谢谢! – deskmonkey
试试下面的代码:
视图
<%= form_for @userimage, url: "/uploads" do |f|%>
上传控制器
def create
...
end
你能证明你的架构文件/迁移覆盖用户形象? –
你可以确认你的模型是'Userimage'与'UserImage'相比吗? – jdgray
'create_table“userimages”,force::cascade do | t | t.text “说明” t.string “称号” t.datetime “created_at”,空:假 t.datetime “的updated_at”,空:假 end' – deskmonkey