Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我一直得到一个类的未定义方法_Ruby On Rails_Ruby On Rails 4_Nomethoderror - Fatal编程技术网

Ruby on rails 我一直得到一个类的未定义方法

Ruby on rails 我一直得到一个类的未定义方法,ruby-on-rails,ruby-on-rails-4,nomethoderror,Ruby On Rails,Ruby On Rails 4,Nomethoderror,我一直在寻找,但我找不到任何东西来帮助我。我正在开发一个应用程序,可以让你在房间里安排会议。我收到的错误是 undefined method 'room_id' for #<Room:0x007fa25cc51128> 这是我的会议管理员: class MeetingsController < ApplicationController before_action :authenticate_user! def new @meeting = Meeting.new

我一直在寻找,但我找不到任何东西来帮助我。我正在开发一个应用程序,可以让你在房间里安排会议。我收到的错误是

undefined method 'room_id' for #<Room:0x007fa25cc51128>
这是我的会议管理员:

class MeetingsController < ApplicationController
before_action :authenticate_user!


def new
  @meeting = Meeting.new
  @rooms = Room.all
  @room = Room.find(params[:room_id])
end



def index
  @meetings = Meeting.all
end

def show
  @meeting = Meeting.find(params[:id])
  @comments = @meeting.comments
  @room = Room.find(params[:id])

end

def create
  @user = User.find(params[:user_id])
  @meeting = @user.meetings.create(meeting_params)
  NotificationMailer.meeting_scheduled(@meeting).deliver_now

  if @meeting.save
    redirect_to root_path, flash: { notice: "Congratulations!!! Your meeting    has been scheduled successfully!!!"}

  else
    render :new
  end
end



private

def meeting_params
  params.require(:meeting).permit(:name, :start_time, :end_time, :user_id,   :room_id)
end


end
类会议控制器
以下是我的会议模式:

require 'twilio-ruby'

class Meeting < ActiveRecord::Base
belongs_to :user
belongs_to :room
has_many :comments

validates_presence_of :user_id, :room_id, :name

def meeting_author_email
  user.try(:email)
end

def self.send_reminder_text_message(body, phone)
  @account_sid = ENV['twilio_account_sid']
  @auth_token = ENV['twilio_auth_token']
  @from_phone_number = ENV['twilio_phone_number']

  @twilio_client = Twilio::REST::Client.new(@account_sid, @auth_token)

  @twilio_client.account.messages.create( to: phone,
                                        from: @from_phone_number,
                                        body: body

                                      )
end

def start_timestamp
  (start_time - 6.hours).strftime('%b %e, %l:%M %p')
end

def end_timestamp
  (end_time - 6.hours).strftime('%b %e, %l:%M %p')
end
end
需要“twilio ruby”
班会
正确的URI是:
/rooms/:room\u id/meetings/new(:format)

我不知道问题出在哪里,这让我很沮丧。任何帮助都将不胜感激。我已经搜索了一遍又一遍,一直无法解决这个问题


谢谢。

您的
房间
型号没有名为
Room\u id
的列,但它有一个名为
id
的列。应用程序中的每个对象都有一个自动生成的
id
列,作为Rails“魔力”的一部分。您似乎想要的
room\u id
列属于
meetings
表,但您指出它应该来自
room
对象

更换线路:

Schedule a Meeting", new_room_meeting_path(@user, @meeting, @room.room_id)%></li>
安排会议”,新的会议室会议路径(@user、@Meeting、@room.room\u id)%>
与:

安排会议”,新建会议室会议路径(@user、@Meeting、@Meeting.room\u id)%>

由于您声明URI为“/rooms/:rooms\u id/meetings/new(:format)”,修复的第一部分是在@room对象上使用:id属性而不是:rooms\u id属性,第二部分是从路由中删除不必要的对象。您只需要有效URI的id属性:

<li><%= "Schedule a Meeting", new_room_meeting_path(@room.id)%></li>

  • 结果是我调用了错误的URI。。正确的答案是:

        <li><%= link_to "Schedule a Meeting", new_user_meeting_path(current_user) %></li>
    

  • 是什么耍了花招。我还犯了一个错误,没有正确处理种子数据,这真的让我陷入了困境。再次感谢所有帮助我的人。我在做一个老项目,所以我有很多事情要做。

    如果你能把问题缩小到一些特定的行,明确地问一个关于某件事的问题,你会得到更好的回答。如指南中所述,创建一个。感谢您的建议。我想如果我多分享一点,它可以提供更好的背景。将在这方面取得进展。再次感谢。我不是Rails的人,但在评论队列中遇到了这个问题,这让我觉得很难确定。也许代码对Rails开发人员更有意义。但是,是的,一般来说,明确和可重复的问题更容易回答。缩小/调试范围后,请尝试编辑此问题。你要么去一个特定的地方负责,要么自己解决!(如果你愿意的话,别忘了回答你自己的问题!)玩得开心。我试过了,现在我得到了这个错误:没有路线匹配{:action=>“new”,:controller=>“meetings”,:format=>,:room\u id=>nil}缺少所需的键:[:room\u id]谢谢你的回复!我已经为我的数据库设定了种子,所以我不知道为什么它会说缺少的键:room_idid是所有Rails表的隐式列。您根本不必指定id列,因为它是自动生成的(创建和更新的时间戳列也是如此)。如果要创建房间模型并指定房间id,则会犯错误(除非房间id是其他房间对象的外键)。此外,事实上,你得到了一堆零意味着你在传递垃圾数据。请参阅修改后的答案。谢谢您的帮助。我重新设定了DB的种子,现在我遇到了这样的错误:“找不到id为=”的房间。”。。此错误出现在会议控制器的“新”方法上。当我运行Rails C时,我在那里看到了我的所有数据,它显示我确实为我所播种的9个房间中的每一个都提供了我的id。谢谢,我刚刚尝试了这一点,现在我遇到了这个错误“找不到id为的房间=”在这里,我调用房间实例以显示特定id。您需要提供有关正在加载的房间对象的更多信息,当出现错误时,该对象将引导您,以及更多上下文。似乎您正在向Room.find(params[:Room_id])传递不正确的(id/数据类型)。您也可以尝试:新建会议室会议室路径(@room)
    <li><%= "Schedule a Meeting", new_room_meeting_path(@room.id)%></li>
    
        <li><%= link_to "Schedule a Meeting", new_user_meeting_path(current_user) %></li>