1

dashboard_controllerユーザーが他のコントローラー用に 3 つのフォームを送信できるようにしようとしているところがあります。divリンクをクリックしたときにフォームをロードするためにjQueryを使用しています。jQuery は問題なく動作し、クリックしたリンクに応じてフォームを表示できます。ただし、実際にフォームを送信すると、エラーが発生します。

undefined method `model_name' for NilClass:Class

dashboard_controllerアクションは次のとおりです。

class DashboardController < ApplicationController
  def show
    @message = Message.new
    @image = Image.new
    @link = Link.new
  end
end

フォームを表示するために最初に読み込んでいるjQueryは次のとおりです。

$("#forms").html("#{j render :partial => "messages/form"}")

そして、リンクがクリックされたときに私が持っているjQueryは次のとおりです。

$("#add_image").live('click', function(){
  $("#forms").html("#{j render :partial => "images/form"}")
})

そして、ここに私がクリックしてフォームをレンダリングするリンクがあります:

=link_to 'Image', "#", :class => "btn btn-info btn-medium inactive", :id => "add_image"

タブをクリックImageすると、画像フォームが読み込まれます。しかし、そのフォームで送信をクリックすると、エラーがスローされます。誰かが説明して、それを修正する方法を理解するのを手伝ってもらえますか?

編集:これは機能していますが、深刻なハックのように感じます。作成アクションがある他のコントローラーでは、変数を新しいオブジェクトに割り当てるだけです。たとえば、新しいメッセージを作成しようとしている場合、createアクションは次のmessages_controllerようになります。

def create
  @link = Link.new
  @image = Image.new
  @message = Message.new(params[:message])
  ...
end
4

0 に答える 0