11155
(-- --)
1
hello guys, I'm trying to make a ajax request and return some data from
my controller, but how I do it to call the JSON in my JS after the
request ?
controller task
def create
@task = Task.create( :project_id => params[ :project_id ], :name =>
params[ :task ] )
if @task.valid?
@return = { :task => @task.name, :project_id => @task.project_id }
else
@return = { :error => "Ocorreu um erro inesperado. Tente
novamente." }
end
return ActiveSupport::JSON.encode( @return )
end
view index - JS
$( "#tasks_form" ).submit( function( e ) {
e.preventDefault();
var task = $( this).find( "textarea" ).val();
$.post( "<%= url_for :controller => :task, :action => :create
%>", { task: task, project_id: <%= @project_id %> }, function( e ) {
}, "json");
} );
Thank you
Try using basic jquery ajax call i.e.
$.ajax({
url : “your_url”
// JSON data
}).done(function(response) {
// here response will have JSON returned by task#create
});
11155
(-- --)
3
Thank you guys for the answer, but I just did this:
render :json => ActiveSupport::JSON.encode( @return )
You can read more about rendering JSON here:
You can also use respond_with method and change your
render :json => ActiveSupport::JSON.encode( @return )
to
respond_with @return
But for using this, you have to specify responds_to :json in controller