我一直在寻找和搜索,但我找不到任何可以帮助我的事情。我正在构建一个应用程序,允许您在一个房间安排会议。我收到的错误是
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)
我不知道问题是什么,这真让我感到沮丧。任何帮助将不胜感激。我一遍又一遍地搜索,无法解决这个问题。
感谢。
答案 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>
这是什么伎俩。我还犯了错误,没有正确处理种子数据,这真的让我陷入了循环。再次感谢所有帮助过我的人。我正在做一个旧项目,所以我有很多事要做。