0

私の受信トレイでは、受信トレイから複数のメッセージを削除する方法を作成しました。現在、現在のユーザーが表示しているメッセージを削除する方法を設定しようとしています。メッセージの下部に というリンクがあるはずですDelete。ユーザーがDeleteリンクをクリックすると、メッセージは削除され、ユーザーは受信トレイにリダイレクトされます。

コードをコントローラーに追加すると、受信トレイのメッセージを表示することさえできなくなりました。undefined local variable or method "message" errorページ タイトルのメッセージを表示しようとすると、 が表示されますNameError in Messages#show

この問題を解決する方法を知っている人はいますか?

コントローラーに追加された新しいコード:

   def destroy
     @message = Message.find(params[:id])
     @message.destroy
     flash[:notice] = "Successfully deleted message."
     redirect_to user_messages_path(@user, @messages)
   end

メッセージ コントローラー:

Class MessagesController < ApplicationController
  before_filter :set_user

  def show
     @message = Message.find(params[:id])
     @message.readingmessage if @message.recipient == current_user
   end

   def destroy
     @message = Message.find(params[:id])
     @message.destroy
     flash[:notice] = "Successfully deleted message."
     redirect_to user_messages_path(@user, @messages)
   end

  private
    def set_user
      @user = current_user
    end
end

show.html:

<%= link_to "remove", message, :confirm => 'Are you sure?', :method => :delete %>

ルート:

Dating::Application.routes.draw do
  get 'signup' => 'users#new'
  get 'login' => 'sessions#new'
  get 'logout' => 'sessions#destroy'
  get 'edit' => 'users#edit'
  get "/profile/:id" => "users#show"
  get "profile/:id/settings" => 'users#edit'
  match 'settings/:id' => 'users#settings'

  resources :users
  resources :sessions
  resources :password_resets
  resources :galleries
  resources :photos
  resources :searches

  resources :users do  
      get 'settings', on: :member  
  end

  root to: 'users#new'
  root to: 'galleries#index'

  resources :users do |user|
    resources :messages do
      collection do
        post 'delete_multiple'
      end
    end
  end
4

1 に答える 1

3

@message次のように link_to で使用する必要があると思います。

<%= link_to "remove", @message, :confirm => 'Are you sure?', :method => :delete %>
于 2013-04-17T14:12:30.090 に答える