I’m using Rails 4.2.3. I want to submit a form in a modal dialog, so I have set up my form like so
<%= form_for @my_object, :remote => true do |f| %>
but if the user submits the form successfully, I would like to reload the page that invoked the modal dialog with a notice of “Saved Successfully.” I can’t figure out what I need to put in my “format.js” to make this happen. This is what I have in my controller so far …
def create
@my_object = MyObject.new(my_object_params)
@current_user = User.find(session["user_id"])
@my_object.user = @current_user
respond_to do |format|
if @my_object.save
format.html { redirect_to controller: "users", action: "index", notice: 'Saved successfully.' }
format.js { render action: ‘../users/index’, notice: ‘Saved Successfully’, location: @my_object }
else
format.html { render action: "index" }
format.js { render json: @my_object.errors, status: :unprocessable_entity }
end
end
end
Right now, a successful submission results in a 500 error complaining about missing partials when I try and execute the above. Pretty sure what I have is wrong anyway.
You can do the following:
If you like keeping things separated, just put
format.js
in your controller and do the javascript redirect in your view (redirect.js.erb)In both cases, just set flash[:notice] to whatever you need before redirecting.
That will help you, from your controller
For this you will need to have events/index.js.erb in your file structure.
If you have want to redirect it after successfully
create/updated
and just use.html
method. Otherwise just use JS option like in this LINK.If you are redirecting anyway, you might as well avoid the remote/AJAX call, and just redirect from the create action.
and