2016-12-22 15 views
1

私は、ユーザーが特定のイベントのために曲を入力できるようにするプログラムを持っています。提出するには、そのイベントのパーティコードを入力する必要があります。ここではそれがどのように見えるのスクリーンショットです:私はそれが私にこのエラーを与えて送信すると enter image description hereActionController :: InvalidAuthenticityToken投稿時

class SongsController < ApplicationController 

    def new 
     @song = Song.new 
    end 

    def create 
     current_event = Event.find(song_params[:event_id]) 
     @song = current_event.songs.build(song_params) 
     if @song.save 
      flash[:success] = "Success" 
      redirect_to event_path(@song.event) 
     else 
      flash[:error] = "Failed" 
     end 

    end 

    def destroy 
    end 
    private 

     def song_params 
     params.require(:song).permit(:event_id, :artist, :title, :genre) 
     end 
end 

イベントモデル

enter image description here

ここでは私のSongsControllerは、次のようになります

class Event < ApplicationRecord 
    belongs_to :user 
    validates :name, presence: true 
    validates :partycode, presence: true, length: {minimum: 5} 
    has_many :songs, dependent: :destroy 

end 

歌モデル

class Song < ApplicationRecord 
    belongs_to :event 
    validates :artist, presence: true 
    validates :title, presence: true 
end 

new.html.erb(歌)

<br> 
<br> 
<h1> Member page </h1> 
<div class ="container"> 
    <div class="jumbotron"> 
    <h2> Select an event to add songs to: </h2> 
    <%= form_for Song.new do |f| %> 
     <%= f.collection_select(:event_id, Event.all, :id, :name) %> 
    <h3> Enter your song </h3> 
    <%= form_for Song.new do |f| %> 
     <%= f.text_field :artist, placeholder: "Artist" %> 
     <%= f.text_field :title, placeholder: "Title" %> 
     <%= f.text_field :genre, placeholder: "Genre" %> 
    <h2> Enter the partycode for that event: </h2> 
    <%= form_for Event.new do |f| %> 
     <%= f.text_field :partycode %> 
     <%= f.submit "Submit", class: "btn btn-primary" %> 
    <% end %> 
    <% end %> 
    <% end %> 
    </div> 
</div> 

私は私のウェブサイトの仕事のこの機能を作るために何ができますか?どんな助けも大変ありがとうございます。

+0

ソングとイベントの関係を正しく設定しましたか? –

+0

私は私の関係を投稿します – Aaron

+0

あなたのビューコードも加えてください。 – dp7

答えて

1

私はあなたの意見に多くのform_forネストを見ます。それは不可能だ。フォームには1つだけ提出してください。

私はあなたが完全に自分のフォームを台無しにしているあなたの_form.html.erb

<div class ="container"> 
    <div class="jumbotron"> 
    <h2> Select an event to add songs to: </h2> 
    <%= form_for @song do |f| %> 
     <%= f.collection_select(:event_id, Event.all, :id, :name) %> 
     <h3> Enter your song </h3> 
     <%= f.text_field :artist, placeholder: "Artist" %> 
     <%= f.text_field :title, placeholder: "Title" %> 
     <%= f.text_field :genre, placeholder: "Genre" %> 
     <h2> Enter the partycode for that event: </h2> 
     <%= f.text_field :partycode %> 
     <%= f.submit "Submit", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 
1

を変更したいかもしれないと思います。理想的には1つのフォームが必要ですが、ここではform_forを使用して別のフォーム内に1つのフォームを保存しています。

form_for documentationをご覧ください。

関連する問題