我正在尝试使用 AJAX 添加新对象,但我得到的只是“无法加载资源:服务器响应状态为 500(内部服务器错误)”。
我花了大约 4 个小时来寻找解决方案,遵循了 2 个教程,但这个错误从未离开过我。
我的 characters_controller.rb
class CharactersController < ApplicationController
def index
@characters = Character.all.order("id DESC")
end
def create
@character = Character.new(params[:character])
if @character.save
flash[:notice] = "Successfully created post."
end
respond_to do |format|
format.js
end
end
end
index.html.erb
<div class="header">
<p>All Hobbit characters</p>
</div>
<div class="characters">
<%= render @characters %>
</div>
<%= form_for(Character.new, :remote => true) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
创建.js.erb
<% if @character.new_record? %>
$('input#character_name').effect('highlight', {color: 'red'});
<% else %>
$('div#characters').append("<%= escape_javascript(render @character) %>");
$('div#<%= dom_id(@character) %>').effect('highlight');
<% end %>
模型只包含 :name 存在验证
最佳答案
从 Rails 4 开始,您不能将 params[:character]
直接传递给 Character.new
方法。尝试这样的事情:
def create
@character = Character.new(character_params)
if @character.save
flash[:notice] = "Successfully created post."
end
respond_to do |format|
format.js
end
end
private
def character_params
params.require(:character).permit(:name)
end
关于javascript - Rails 不显眼的 javascript - 无法加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641191/