远程导轨形式(simple_form_for)

时间:2016-07-15 07:52:11

标签: ruby-on-rails simple-form

如何制作'创建'动作只调用js.erb文件,而不是重新加载页面找不到模板?

我尝试使用远程表单创建图书对象,但该操作会创建'导致这样的错误:

if (hei == null || wei == null || hei.equals("") || wei.equals("")){ // your body here }

books / _form.haml(library:@library):

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

books_controller.rb:

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

书籍/ create.js.erb:

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

更新

我改变了books / create.js.erb:

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

在这种情况下,当<% if !@book.valid? %> alert("error!") <% else %> $('#books_table').replaceWith('<%= j render "table", books: @books %>'); <% end %> 无效时,js文件被称为罚款,但如果可以保存 - 仍然有关于丢失模板的错误

1 个答案:

答案 0 :(得分:1)

remote: true选项未被选中,因为您可以在错误消息中看到:formats=>[:html],而不是:formats=>[:js]预期。

您确定在资产管道中正确设置了 jquery_ujs 吗?这就是选择remote: true选项,并使表单通过JS而不是默认的HTML格式提交。

检查您的/app/assets/javascript/application.js文件

你需要:

//= require jquery //= require jquery_ujs

在您的Sprockets清单中。