Hello guys I want use ajax in my rails application : Here is my routes.rb file
ExampleAjax::Application.routes.draw do
root 'users#index'
resources :users
end
my controller file
class UsersController < ApplicationController
def index
@users = User.all
@user = User.new
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.js {}
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
def user_params
params.require(:user).permit(:fname)
end
end
My view files index.html.erb
<b>Users</b>
<ul id="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>
<br>
<%= form_for(@user, remote: true) do |f| %>
<%= f.label :fname %><br>
<%= f.text_field :fname %>
<%= f.submit %>
<% end %>
new.html.erb
<%=form_for(@user, remote: true) do |f|%>
<p>
<%= f.label :fname %><br>
<%= f.text_field :fname %>
</p>
<p>
<%= f.label :lname %><br>
<%= f.text_field :lname %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
_user.html.erb
<li><%= user.fname %></li>
_create.js.erb
$("<%= escape_javascript(render @user) %>").appendTo("#users");
And my problem is when I click create user I got the following error in console
POST http://localhost:3000/users 500 (Internal Server Error)
Your code is hitting this block:
format.js {}
Which has nothing defined in it, so your app will try to do what it normally does, ie. render the view for the action you are in.
You are in a create action, and your format is js, so it will try to render create.js.erb.
You should rename your _create.js.erb to remove the underscore.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With