2016-11-13 17 views
0

PUTリクエストを使用して、Ruby on Railsアプリケーションでアップロードした曲のタイトルを編集できます。Ruby on RailsでPUTリクエストを作成していますか?

def update 
    @sound_byte = SoundByte.find(params[:id]) #Error here 
    @sound_byte.update!(sound_byte_params) 
    flash[:success] = "The soundbyte title was changed." 
    redirect_to sound_byte_path 
end 

private 

def sound_byte_params 
    params.require(:sound_byte).permit(:mpeg, :mpeg_file_name) 
end 

私はこのようなエラーを取得し終わる:

Couldn't find SoundByte with 'id'=song_name 

この問題を解決する方法の任意のアイデア?私は、オーディオ/ mpegファイルのアップロードを有効にするためにPaperclip gemを使用しています。

編集:ここに私のビューコードビューページで

<%= link_to "Edit", sound_byte_path(sound_byte.mpeg_file_name), class: "btn btn-primary btn-lg btn-xlarge", :method => :put %> 
+0

を試してみてください。フォームコードを提供できますか? – phamhoaivu

+0

@phamhoaivu申し訳ありません私はあなたがフォームコードの意味をよく理解していませんか? PUTリクエストに対応するコードを私のビューに添付しました。 –

+0

私はあなたが曲を編集するためのフォームを持っている必要があると思った。いくつかのテキストボックスに新しい曲の名前と送信するボタンを入力します。 – phamhoaivu

答えて

1

である、あなたはのparamsとして文字列sound_byte.mpeg_file_nameを渡すが、あなたのコントローラでは、あなたがID @sound_byte = SoundByte.find(params[:id])を使用しています。

はあなたのparamsと間違って何かがあります。この

<%= link_to "Edit", sound_byte_path(sound_byte.id), class: "btn btn-primary btn-lg btn-xlarge", :method => :put %> 
+0

param is missingまたは値が空であるというエラーが表示されます:sound_byte この行にはエラーがあります:params.require(:sound_byte).permit(:mpeg) 何が必要ですかphamhoaivuがお勧めし、新しい曲名を提出するためのフォームが含まれていますか? –

+0

はい、フォームコードとconfig/routers.rbを貼り付ける必要があります。可能であれば、コンソールログを貼り付け、パラメータを表示し、コントローラとアクションを処理することもできます。問題は、いくつかの不正なデータをコントローラに渡し、params [id]が名前に等しくないことです。 –

関連する問題