我一直为类

时间:2016-03-14 02:05:58

标签: ruby-on-rails ruby-on-rails-4 nomethoderror

我一直在寻找和搜索,但我找不到任何可以帮助我的事情。我正在构建一个应用程序,允许您在一个房间安排会议。我收到的错误是

undefined method 'room_id' for #<Room:0x007fa25cc51128>

以下是我的application.html.erb

中发生错误的位置
<li><%= link_to "Schedule a Meeting", new_room_meeting_path(@user, @meeting,    @room.room_id)%></li>

这是我的会议控制员:

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

正确的URI是:/rooms/:room_id/meetings/new(.:format)

我不知道问题是什么,这真让我感到沮丧。任何帮助将不胜感激。我一遍又一遍地搜索,无法解决这个问题。

感谢。

3 个答案:

答案 0 :(得分:0)

您的Room模型没有名为room_id的列,但它有一个名为id的列。应用程序中的每个对象都有一个自动生成的id列,作为Rails“神奇”的一部分。您似乎想要的room_id列属于meetings表,但您表示它应来自您的room对象。

替换行:

Schedule a Meeting", new_room_meeting_path(@user, @meeting, @room.room_id)%></li>

使用:

Schedule a Meeting", new_room_meeting_path(@user, @meeting, @meeting.room_id)%></li>

答案 1 :(得分:0)

由于您声明URI是&#34; / rooms /:room_id / meetings / new(。:format)&#34;,修复的第一部分是使用:id属性而不是:room_id @room对象上的属性,其次是从路径中删除不必要的对象。您只需要有效URI的id属性:

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

答案 2 :(得分:0)

原来我正在调用错误的URI ..正确的是:

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

这是什么伎俩。我还犯了错误,没有正确处理种子数据,这真的让我陷入了循环。再次感谢所有帮助过我的人。我正在做一个旧项目,所以我有很多事要做。