0

私は - おそらくばかげている - フォームのレンダリングに問題があります。私は 2 つのコントローラーを持っています: ContentController - タブ付きページのコンテンツ ビューを担当し、ParticipantsController 足場はデータベース モデルを処理するために生成されます。新しい参加者にサインインするためのフォームを作成し、それを部分的な _new.html.erb に配置して、ContentController の「スケジュール」ビューに埋め込みたいと考えています。私はレールに本当に慣れていないので、何かを見逃したかもしれませんが、フォームを次のように配置すると:

<%= form_for @participant do |f| %> 
    <%= f.label :name %>
    <%= f.text_field :name %>
    ...

エラーが発生しました:

First argument in form cannot contain nil or be empty

私のコントローラーには次のものがあります:

def new
    @participant = Participant.new
end

だから私はすべてが大丈夫だと思います。

フォームで @participant の代わりに Participant.new を使用すると、すべてが正しくレンダリングされます。しかし、それがデータベースで機能するかどうかはわかりません。送信ボタンをクリックした後、新しい参加者レコードをデータベースに作成したいということです。

皆さんが私を助けるのに十分な情報を渡すことを願っています. 前もって感謝します

4

1 に答える 1

1

エラー メッセージは、次のものを使用できないことを示しています。

<%= form_for nil do |f| %>
<%= form_for [] do |f| %>

ここでの私の推測では、@participant が nil に設定されており、Participantt#new アクションからのものではないということです。

これを行うと、単純に機能します。

<%= form_for Participant.new do |f| %>

推奨されていませんが。

フォームを含むビューが、ParticipantsController の新しいアクションによって実際にレンダリングされることを確認する必要があります。詳細については、https://github.com/plataformatec/devise/issues/2451を参照してください。

于 2013-10-26T11:13:12.320 に答える