2016-07-15 4 views
1

js.erbファイルのみを呼び出してリロードしないで「作成」アクションを作成する方法テンプレートが見つからない場合は、リモートレールフォーム(simple_form_for)

私は、リモートフォームでブックオブジェクトを作成しようとしていますが、アクションは、このようなエラーで結果を '作成':

Missing template books/create, application/create with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder, :axlsx, :haml, :rabl]}.

冊/ _form.haml(ライブラリ:@library):

= simple_form_for @book, url: library_books_path(library), remote: true do |f| 

books_controller.rb:

def index 
    @books = @library.books 
    @book = Book.new 
end 

def create 
    @book = @library.books.create(book_params) 
end 

def destroy 
    @book = Book.find(params[:book_id]) 
    @book.destroy 
end 

冊/ create.js.erb:

$('#books_table').replaceWith('<%= j render "table", books: @books %>'); 

UPDATE:@bookが有効でない場合、この場合は

<% if [email protected]? %> 
    alert("error!") 
<% else %> 
    $('#books_table').replaceWith('<%= j render "table", books: @books %>'); 
<% end %> 

:私は図書/ create.js.erbを変更

、jsファイルは正常に呼び出されますが、保存できる場合は、テンプレートが欠落していてもまだエラーがあります

答えて

1

remote: trueのオプションはnですお使いのエラーメッセージに:formats=>[:html]が表示されていますので、お待ちください。:formats=>[:js]は予期していません。

アセットパイプラインでjquery_ujsが正しく設定されていますか?これがremote: trueオプションを選択し、フォームがデフォルトのHTML形式ではなくJSを介して送信されます。あなたのスプロケットマニフェストで

//= require jquery //= require jquery_ujs

を:

は、あなたが持っている必要がありますあなたの/app/assets/javascript/application.jsファイル

を確認してください。

+0

両方の項目(jquery&jquery_ujs)は既にapplication.jsに含まれています – Zelenka

+0

私の更新された質問をご覧ください – Zelenka

関連する問題