我的应用程序中有一个不显眼的javascript问题。我在js.erb文件中发出警报以帮助我调试,但是每当我加载页面时它都会运行,而当我单击按钮时它什么都不做。我不太确定我做错了什么。
users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to :root, notice: 'User was successfully created.' }
format.js { render :text => "FINISHED THE AJAX REQUEST" }
else
format.html { render action: "new" }
format.js {}
end
end
end
def edit
@user = User.find(params[:id])
end
def index
@user = User.find(params[:id])
end
private
def user_params
params.require(:user).permit(:email)
end
end
create.js.erb
alert("BUTTON CLICKED");
$('.button').text("Thank You!");
$('.button').animate({"background-color":"#088A08"},300);
$('#e_submit').css("box-shadow","0 0 0px rgba(0, 0, 0, 0)");
$('#e_submit').val("");
welcome.html.erb
<%= form_for(User.new, remote: true) do |f| %>
<%= f.text_field :email, class: "e_submit", placeholder:"Enter your email" %>
<%= f.submit "Subscribe", class: "button" %>
<% end %>
我无法弄清楚为什么@user而不是User.new不起作用,但那是另一天的问题。
答案 0 :(得分:0)
好的我明白了。这一切都源于我对javascript的误解以及它在rails 4应用程序中的位置。我把它放在app / assets / javascripts /当我应该把它放在app / views / users以及视图HTML文件中。
当我把它放在那个目录中时,它不再需要任何准备好的功能。另外,我必须使用format.js删除format.js {}。这现在正在运作。谢谢!