Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.js.erb VS .js

What is the advantage to putting you javascript for your rails app into a .js.erb file instead of just throwing it in your application.js file? I have a create button for businesses so should I put the code into a create.js.erb file or put it into my application.js using:

$("#business_submit").click(function() {} 

All that aside is that I have my create button

    $('.error').hide(); $("#business_submit").click(function() {     // validate and process form here      $('.error').hide();     var name = $("input#business_name").val();     if (name == ""  || name == "Required Field") {         $('#namelabel').show()         $("#business_name").focus();         return false;     }     var address = $("#business_address").val();     if (address == ""  || address == "Required Field") {         $('#addresslabel').show();         $("#business_address").focus();         return false;     }     var city = $("#business_city").val();     if (city == "" || city == "Required Field") {         $('#citylabel').show();         $('#business_city').focus();         return false;     }     var state = $("#business_state").val();     if (state == ""  || state == "Required Field") {         $('#statelabel').show();         $("#business_state").focus();         return false;     }     var zip = $("#business_zip").val();     if (zip == ""  || zip == "Required Field") {         $('#ziplabel').show();         $("#business_zip").focus();         return false;     }     var phone = $("#business_phone").val();     if (phone == ""  || phone == "Required Field") {         $('#phonelabel').show();         $("#business_phone").focus();         return false;     }       var category = $("#business_business_category_id").val();     if (category == " - Choose one - ") {         $('#categorylabel').show();         $("#business_business_category_id").focus();         return false;     }     $("#new_business")[0].reset();     $("#new_business").toggle();    return false; }); 

This works great in my .js file but when I click create it doesn't actually send the information they typed in the form to the database. So I tried copy pasting the code into the .js.erb file. Now the form is submitted to the database when I click create, but half the javascript isn't working. The $('.error').hide(); isn't hiding my errors and they are all showing up regardless. $("#new_business")[0].reset(); isn't reseting my form, and there is no validation checks when I click create. So I either have a fully functional form that doesn't submit or one that submits but isn't really functional. Which one should I try to get working?

I see a lot of code with $.ajax but I can't figure it out for the life of me. I tried for a bit and I started getting some forgery protection errors in rails which is a whole other problem.

like image 989
Mike Avatar asked Jul 14 '09 20:07

Mike


Video Answer


1 Answers

.js.erb files are for controller actions, such as create, when you want javascript to be executed when the action completes. For example, when you want to submit a form via ajax and want display an alert when everything is done, you would put the

$('#business_submit').click(...) 

in your application.js or *.html.erb, and your create.js.erb could look like this:

alert('New object id: ' + <%= new_object.id %>); 

This way, the javascript that is getting returned to the browser can be first rendered by Erb, allowing you to insert custom strings/variables/etc just like you can in .html.erb templates.

like image 113
erik Avatar answered Sep 28 '22 10:09

erik