gpt4 book ai didi

javascript - Form_for 不适用于 JS/JQuery

转载 作者:行者123 更新时间:2023-11-28 08:05:18 25 4
gpt4 key购买 nike

当我使用 JavaScript 时,我在使用表单时遇到问题。如果没有将远程选项设置为 true,一切都可以正常工作,但是一旦我设置它,更改 Controller 并创建它生成的所需 JS 文件

POST .. 500 内部服务器错误

点击提交按钮时。

此外,回复预览向我显示了一个 Rails 错误页面,上面写着

Vocabs#create 中的 NoMethodErrornil: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>

我希望我能很好地解释自己,以便在这里获得一些帮助。我尝试了几个小时来自己找到问题的解决方案,并在这里寻找类似的问题,但没有找到任何问题,也没有得到任何结果。

最佳答案

在 friend 的帮助下,我发现主要问题是在用 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 了。

关于javascript - Form_for 不适用于 JS/JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com