Form_for不能与JS/JQuery一起工作
Form_for doesn't work with JS/JQuery
当我使用JavaScript时,我有问题让表单工作。没有远程选项设置为true所有工作正常,但只要我设置它,更改控制器并创建所需的JS文件它生成一个
POST .. 500 Internal Server Error
当点击提交按钮时。
此外,回复预览显示了一个Rails错误页面,上面写着
NoMethodError in Vocabs#create
和undefined method > for nil:NilClass
中的相关部分(在使用JS之前可以正常工作)
表单(vocabs/_new_form.html.erb)如下所示:
<%= form_for @vocab, remote: true do |f| %>
<%= render 'fields', f: f %>
<%= f.submit "Add", class: "btn btn-large btn-primary" %>
<% end %>
vocab_controller的创建操作如下:
def create
@user = current_user
@vocab = current_user.vocabs.build(vocab_params)
@vocabs = @user.vocabs.paginate(page: params[:page])
respond_to do |format|
format.html {
if @vocab.save
flash.now[:success] = "Vocab created!"
redirect_to root_url
else
flash.now[:error] = "Vocab not saved!"
render 'new'
end
}
format.js
end
end
create.js.erb如下:
$('#new_vocab').remove();
当然,我想做的不仅仅是删除表单,但由于我甚至没有设法做到这一点,我想保持简单。
_fields.html.erb:
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.label :nl_word, @user.native_language %>
<%= f.text_field :nl_word %>
<%= f.label :fl_word, @user.foreign_language %>
<%= f.text_field :fl_word %>
<%= f.label :tag, "Your Tag" %>
<%= f.text_field :tag%>
<%= f.label :importance, "Importance" %>
<%= f.select(:importance, options_for_select(
StaticData::IMPORTANCE_SEED, :selected => f.object.importance)) %>
</div>
我希望我能解释得足够好,能得到一些帮助。我自己试了几个小时来寻找问题的解决方案,并在这里寻找类似的问题,但没有找到任何答案,也没有任何进展。
在朋友的帮助下,我发现主要问题是,当用JS处理它时,我没有为我想在表单(_new_form.html.erb)中创建的vocab对象提供任何验证。
所以我改变了vocab_controller。rb
def create
@user = current_user
@vocab = current_user.vocabs.build(vocab_params)
@vocabs = @user.vocabs.paginate(page: params[:page])
respond_to do |format|
if @vocab.save
flash.now[:success] = "Vocab created!"
format.html do
redirect_to root_url
end
format.js
else
flash.now[:error] = "Vocab not saved!"
format.html do
render 'new'
end
format.js
end
end
end
这样做的技巧,我的表单与JS现在工作。
相关文章:
- 将FormParams与Jersey和jQuery一起使用
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 使一组对象与 jQuery 一起拖动
- 将(this)与动态内容jQuery一起使用
- 将页面Url与jQuery一起使用
- 如何找到元素'的onClick处理程序实际上是与jQuery一起添加的
- 400错误请求仅使用AngularJs,与jQuery一起使用
- 引导设置单选按钮与 jquery 一起检查
- 将 ajax 与 jQuery 一起使用 - URL 不被接受
- 如何将 fadeIn 与 css 属性更改 jquery 一起使用
- 我应该如何初始化这个变量以与jQuery一起使用
- 单击按钮更改按钮上的 ID 值,单击新 ID 更改回原始 ID 与 Jquery 一起使用
- 将其与伪选择器 jquery 一起使用
- 使类在由 jquery 更新后与 jquery 一起使用
- 如何引用要与 HTML 和 jQuery 一起使用的 XML 文件/数据
- 如何将foreach循环与JQuery一起使用
- 将 $_GET 与 Jquery 一起使用
- 如何将表与 jquery 一起使用
- 将.html与JQuery一起使用,不会将数组中的所有项发布到html