0
我正在構建自定義收件箱,並且在添加此行以獲取所有要顯示的郵件後,「<%user.received_messages.each do | message |%>」我現在正在獲取「未定義的局部變量或方法`用戶'「錯誤。不知道爲什麼額外的編碼行會導致這個錯誤以及如何解決它。郵件中的NameError#用戶索引
_inbox.html:
<h2>Your Inbox</h2>
<% user.received_messages.each do |message| %>
No messages in your Inbox
<% end %>
<%= form_tag delete_multiple_user_messages_path, :method=>:post do %>
<table class="table table-bordered">
<tr>
<th>Delete?</th>
<th>Sent</th>
<th>Sender</th>
<th>Sent</th>
</tr>
<% for message in @messages %>
<tr>
<td><%= check_box_tag "delete[]", message.id %></td>
<td>
<% if message.read? %>
<%= link_to h(message.subject), user_message_path(@user, message) %>
<% else %>
<%= link_to "#{h(message.subject)} (unread)", user_message_path(@user, message) %>
<% end %>
</td>
<td><%= "#{message.sender.first_name} #{message.sender.last_name}" %></td>
<td><%=h message.created_at.to_s(:long) %></td>
</tr>
<% end %>
</table>
<%= submit_tag "Delete selected" %> |
<% end %>
<%= link_to "Compose New Message", new_user_message_path(@user)%> |
<%= link_to "View Sent Messages", user_messages_path(current_user, :mailbox => :sent)%>
的index.html:
<% if params[:mailbox] == "sent" %>
<%= render :partial => "sent" %>
<% elsif params[:mailbox] == "inbox" %>
<%= render :partial => "inbox" %>
<% elsif params[:mailbox] == "archieved" %>
<%= render :partial => "inbox" %>
<% end %>
messages_controller:
class MessagesController < ApplicationController
before_filter :set_user
def index
if params[:mailbox] == "sent"
@messages = @user.sent_messages
elsif params[:mailbox] == "inbox"
@messages = @user.received_messages
#elsif params[:mailbox] == "archieved"
# @messages = @user.archived_messages
end
end
def new
@message = Message.new
if params[:reply_to]
@reply_to = User.find_by_user_id(params[:reply_to])
unless @reply_to.nil?
@message.recepient_id = @reply_to.user_id
end
end
end
def create
@message = Message.new(params[:message])
@message.sender_id = @user_id
if @message.save
flash[:notice] = "Message has been sent"
redirect_to user_messages_path(current_user, :mailbox=>:inbox)
else
render :action => :new
end
end
def show
@message = Message.readingmessage(params[:id],@user_id)
end
def delete_multiple
if params[:delete]
params[:delete].each { |id|
@message = Message.find(id)
@message.mark_message_deleted(@message.id,@user_id) unless @message.nil?
}
flash[:notice] = "Messages deleted"
end
redirect_to user_messages_path(@user, @messages)
end
private
def set_user
@user = current_user
end
end
我有def set user。添加了原始帖子的控制器。 – pwz2000 2013-03-27 13:32:49
因此,您需要使用@user使其工作。無論如何,請參閱我的更新 – 2013-03-27 13:34:27
簡單修復。謝謝。 – pwz2000 2013-03-27 13:38:57