Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ruby on rails:未定义的方法`_path‘

ruby on rails:未定义的方法`_path‘
EN

Stack Overflow用户
提问于 2018-01-27 20:44:03
回答 2查看 912关注 0票数 1

当我试图创建一个新房间时,我从视图的第7行得到错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
undefined method `rooms_path' for #<#<Class:0x007fb46b5db2a0>:0x007fb46b5d9ec8>

我有点困惑为什么我会得到这个错误。我已经在RoomFacility之间建立了一种关系,即每个设施都有许多房间。工具部分的工作没有bug,我已经能够创建/编辑/显示工具。

视图(视图/房间/new.html.erb)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="panel panel-default">
  <div class="panel-heading">
    Create your beautiful room
  </div>
  <div class="panel-body">
    <div class="container">
      <%= form_for @room do |f| %>
        <div class="form-group">
          <label>Name</label>
          <%=f.text_field :room_name, placeholder: "What is the name of the room?", class: "form-control", required: true%>
        </div>

        <div><%= f.submit "Create This Room", class: "btn btn-normal" %></div>

      <%end%>
    </div>
  </div>
</div>

我的房间模型( model /room.rb):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Room < ApplicationRecord
  belongs_to :facility

  validates :room_type, presence: true
  validates :room_name, presence: true
end

My Facility model (models/facility.rb):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Facility < ApplicationRecord
  belongs_to :user
  has_many :photos
  has_many :rooms

  validates :facility_name, presence: true
  validates :address, presence: true
  validates :license, presence: true
  validates :phone, presence: true

  def cover_photo(size)
    if self.photos.length > 0
      self.photos[0].image.url(size)
    else
      "blank.jpg"
    end
  end
  
end

我的房间控制器(Controller/RoomsControler.rb)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class RoomsController < ApplicationController
  before_action :set_room, except: [:index, :new, :create]
  
  def index
    @facility = Facility.find(params[:facility_id])
    @rooms = @facility.rooms
  end

  def new
    @facility = Facility.find(params[:facility_id])
    @room = @facility.rooms.build
  end
 end

路由(routes.rb)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Rails.application.routes.draw do
  devise_for :users,
              path: '',
              path_names: {sign_in: 'login', sign_out: 'logout', edit: 'profile', sign_up: 'registration'},
              controllers: {omniauth_callbacks: 'omniauth_callbacks', registrations: 'registrations'}

  resources :users, only: [:show]
  resources :facilities, except: [:edit] do
    member  do
      get 'listing'
      get 'pricing'
      get 'features'
      get 'services'
      get 'types_care'
      get 'photo_upload'
      get 'room_upload'
    end

    resources :rooms, except: [:edit] do
      member  do
        get 'listing'
        get 'pricing'
        get 'photo_upload'
      end
    end

    resources :photos, only: [:create, :destroy]
  end
end

我已经坚持了几天了,真的很感谢你的帮助:)提前谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-01-28 01:43:58

form_for基于@room的类生成url,不包含外部资源。因此,您必须使用以下语句显式地告诉Rails执行此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= form_for [@room.facility, @room] do |f| %>
票数 0
EN

Stack Overflow用户

发布于 2018-01-28 09:48:12

由于路径是嵌套的,因此请为form_for选择以下任一选项,而不是<%= form_for @room do |f| %>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= form_for @room, url: [@room.facility, @room] do |f| %>

<%= form_for @room, url: [:facility, @room] do |f| %>

<%= form_for [@room.facility, @room] do |f| %>

<%= form_for [:facility, @room] do |f| %>

Here您可以获得有关form_for helper的更多详细信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48480359

复制
相关文章
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.5K0
Ruby On Rails 4 hello world,Ruby On Rails上手
Ruby on Rails 基础(7)
Note: bundle install 过程中有一个警告,让我们不要使用 root,这样会让其它用户无法操作此应用,其实还有一定安全隐患,这里为图方便,只为了解功能就不去讲究这些了,生产环境下要非常注意 Don’t run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root user
franket
2021/11/25
1K0
Ruby on Rails 基础(9)
报错:There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
franket
2021/11/25
9440
Ruby on Rails 基础(6)
没有创建成功,但是反馈结果却是成功 (说明这是一批命令,最后一个反馈结果正常),并且生成一个文件目录
franket
2021/11/25
1.7K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(8)
文件/文件夹 作用 app/ 存放程序的控制器、模型、视图、帮助方法、邮件和静态资源文件。本文主要关注的是这个文件夹。 bin/ 存放运行程序的 rails 脚本,以及其他用来部署或运行程序的脚本。 config/ 设置程序的路由,数据库等。详情参阅 “设置 Rails 程序” 一文。 config.ru 基于 Rack 服务器的程序设置,用来启动程序。 db/ 存放当前数据库的模式,以及数据库迁移文件。 Gemfile, Gemfile.lock 这两个文件用来指定程序所需的 gem 依赖件,用于 Bun
franket
2021/11/25
1.9K0
Ruby on Rails 基础(11)
启动浏览器,可以进行访问 ---- 命令汇总 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable rvm list known rvm list rvm install 2.3 ruby -v gem -v sqlite3 --version gem source -l time
franket
2021/11/25
1K0
Ruby on Rails 基础(2)
RVM (Ruby Version Manager) 是一个 CLI 工具,可以用来对 ruby 的多个版本进行安装,隔离和管理
franket
2021/11/25
8490
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(3)
查看可用ruby版本 [root@h202 ruby]# rvm list known -bash: rvm: command not found [root@h202 ruby]# su - root [root@h202 ~]# cd ruby/ [root@h202 ruby]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p
franket
2021/11/25
1.2K0
Ruby on Rails 基础(4)
安装Rails 检查环境 检查以下三个软件,确保已经安装 [root@h202 ruby]# ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux] [root@h202 ruby]# gem -v 2.5.1 [root@h202 ruby]# sqlite3 --version 3.6.20 [root@h202 ruby]# ---- 替换安装源 如果不替换源,会很慢,或者根本没法获取包,因为有墙 [root@h202 rub
franket
2021/11/25
1.2K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
6410
RoR:Ruby On Rails 的 Web Service
3.c:\flexstore\ruby script/generate model product
用户3135539
2018/09/12
9430
Ruby on Rails 基础(5)
其实就是一捆gems Tip: 查看本地有哪些 gem ,可以通过如下方式 [root@h202 ruby]# gem list *** LOCAL GEMS *** actionmailer (4.2.6) actionpack (4.2.6) actionview (4.2.6) activejob (4.2.6) ... ... rdoc (4.2.1) rvm (1.11.3.9) sprockets (3.6.0) sprockets-rails (3.0.4) test-unit (3.1.
franket
2021/11/25
8510
Ruby on Rails 基础(10)
成功启动,在本地启动浏览器,可以进行访问 (无法从外部访问,原因是并未绑定IP) 直接使用 Ctrl + C 就可以停止此应用 如果希望从外部访问,可以进行如下配置 -b 可以绑定服务 IP [root@h202 blog]# rails server -b 0.0.0.0 => Booting WEBrick => Rails 4.2.6 application starting in development on http://0.0.0.0:3000 => Run `rails server -h
franket
2021/11/25
4140
ruby on rails使用笔记
如果升级过程中说xcode版本太低 还得先升级xcode 重启电脑后继续升级ruby 升级完系统依然报错说xcode版本太低可以使用以下命令切换xcode版本
lilugirl
2019/05/28
1.1K0
框架分析(6)-Ruby on Rails
Ruby on Rails(简称Rails)是一种使用Ruby编程语言开发的开源Web应用程序框架。它遵循MVC(Model-View-Controller)架构模式,旨在提供简单、高效的开发方式,以减少开发人员在构建Web应用程序时的重复劳动。
学编程的小程
2023/10/11
3930
框架分析(6)-Ruby on Rails
MAC安装Ruby Rails brew gem
Error running ‘requirements_osx_brew_libs_install autoconf automake libtool pkg-config libyaml readline libksba openssl’,
全栈程序员站长
2021/05/19
1.7K0
ubuntu 安装 Ruby, Rails 运行环境
或者可以安装 1.8.7 版本,也可以是 1.9.3,只要将后面的版本号跟换一下就可以了 同样继续等待漫长的下载,编译过程,完成以后,Ruby, Ruby Gems 就安装好了。 步骤3 - 设置 Ruby 版本
零式的天空
2022/03/02
1.7K0
ruby on rails + mysql 开发环境搭建
ror对于初学者来讲,可能最大的困难莫过于开发环境的安装与搭建,今天折腾了大半天基本搞定了,把过程贴在这里,以便初学者少走弯路。 1.安装ruby 1.8.6 打开  http://rubyforg
菩提树下的杨过
2018/01/22
3.8K0
ruby on rails + mysql 开发环境搭建

相似问题

CSV导入:未定义的方法‘`path',Ruby On Rails

125

未定义的方法..._index_path Ruby on Rails

50

Ruby on Rails未定义的方法`referrals_path

111

Ruby on Rails未定义方法`products_path的路由问题

20

Link_to Ruby on rails -未定义的方法`post_path‘

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文