Is there a way of executing embedded ruby in a javascript file in my /public/javascripts directory?

StackOverflow https://stackoverflow.com/questions/2726421

문제

I have a form with an ever-growing amount of associated javascript. At present this javascript lives in my form view which is fine, but it's getting larger and starting to overwhelm the form making it difficult to work on the form.

I want to put this in a separate file in my /public/javascripts directory but a lot of the javascript is generated by embedded ruby. This embedded ruby is ignored and passed through to the browser if I just put the code here.

What is the best way (if any) of having this embedded ruby executed and the javascript being generated in the same way as if it were in my view?

도움이 되었습니까?

해결책

You can create dynamic erb templates for javascript, but they don't go in the public/javascripts directory.

I suggest you move the javascript into a partial. Create a file named _form_js.html.erb and put the content of your script tag there. Then <%= render :partial => 'form_js' %> from your view.

As a side note, it is likely that you would be better off using completely static javascript that identifies elements of the form by their class/id and reacts to this, rather than using custom javascript for each element.

다른 팁

You can create RJS templates and group your Javascript code in the RJS files. Refer: http://www.codyfauser.com/2005/11/20/rails-rjs-templates

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top