-2
我有一個用戶,對話和消息模型。用戶has_many對話和消息。對話has_many消息,並且消息屬於用戶和對話。會話和消息模型都有一個user_id列。未定義的方法`name'爲零:NilClass - 模型關聯問題
當我嘗試顯示與特定消息關聯的用戶名時,我得到未定義的方法錯誤。
我Conversations_controller
class ConversationsController < ApplicationController
def create
@conversation = current_user.conversations.build(conversation_params)
if @conversation.save
save_conversation(@conversation)
flash[:notice] = "Conversation was succesfully created"
redirect_to conversation_path(@conversation)
else
render 'new'
end
end
def show
@conversation = Conversation.find(params[:id])
save_conversation(@conversation)
@message = @conversation.messages.build
end
我的郵件控制器
class MessagesController < ApplicationController
def create
@message = current_conversation.messages.build(message_params)
if @message.save
flash[:notice] = "Message was successfully created"
redirect_to conversation_path(current_conversation)
else
flash[:notice] = "Message not saved"
render 'new'
end
end
private
def message_params
params.require(:message).permit(:chat, :user_id)
end
end
我的模型
class User < ApplicationRecord
has_many :conversations
has_many :messages
end
class Message < ApplicationRecord
belongs_to :conversation
belongs_to :user
end
class Conversation < ApplicationRecord
belongs_to :user
has_many :messages, dependent: :destroy
end
我的談話節目視圖
<h1><%= @conversation.title %></h1>
<p>
Description: <%= @conversation.description %>
</p>
<p>
Created by: <%= @conversation.user.name %>
</p>
<% if @conversation.messages.any? %>
<% @conversation.messages.each do |message| %>
<%= message.chat %>
<%= message.user.name %>
<% end %>
<% end %>
它的message.user.name Rails似乎要例外。我的印象是,因爲這兩個模型相關聯,我可以使用user.name?
我將不勝感激任何人可以提供的幫助,請讓我知道如果你需要任何其他的幫助。
感謝
請問您可以發佈具體錯誤(整個錯誤信息)。我會幫助診斷問題。 – Sean
@Sean整個錯誤消息是對話#show中的NoMethodError,未定義方法'name'爲nil:NilClass –
來自該錯誤消息,我們可以推斷出該問題不是在用戶上調用名稱,問題是您正在嘗試調用名稱爲零。這意味着message.user返回nil。試着找出消息不與用戶關聯的原因,然後我認爲你的代碼應該可以工作(一旦設置了該關聯) – Sean