Note that there are some explanatory texts on larger screens.

plurals
  1. PODynamic Partial Based on Select Box - Rails 2.3.5
    primarykey
    data
    text
    <p>I've edited my request to hopefully be clearer. I need to render a partial dynamically based on a previous selection box.</p> <p>REQUEST belongs to PRODUCT</p> <p>PRODUCT belongs to CATEGORY</p> <p>CATEGORY has many PRODUCTS</p> <p>PRODUCT has many REQUESTS</p> <p>User hits form: create_request.html.erb</p> <p>User selects a category, then the products select list is populated (like Railscast 88 - dynamic select boxes)</p> <p>What I now need is to render different partial forms based on which product is selected. I suck at jquery.</p> <p>create_request.html.erb:</p> <pre><code>&lt;%= javascript_include_tag "dynamic_products.js" %&gt; &lt;% form_for :request, :url =&gt; {:controller =&gt; :requests, :action =&gt; :create_request, :id =&gt; params[:id]} do |f| %&gt; &lt;label&gt;Select Category:&lt;/label&gt; &lt;%= select( "request", "category_id", Category.find( :all).collect { |c| [c.name, c.id] })%&gt;&lt;/br&gt; &lt;div id="product_field"&gt; &lt;label&gt;Select Product&lt;/label&gt; &lt;%= select( "request", "product_id", Product.find( :all).collect { |p| [p.name, p.id] })%&gt;&lt;/br&gt; &lt;/div&gt; #### and here is where I need help: #### if request.product_id = 1, render partial _form1 #### if request.product_id = 2, render partial _form2 &lt;button type="submit"&gt;Submit&lt;/button&gt; &lt;% end %&gt; </code></pre> <p>dynamic_products.js.erb:</p> <pre><code>var products = new Array(); &lt;% for product in @products -%&gt; products.push(new Array(&lt;%= product.category_id %&gt;, '&lt;%=h product.name %&gt;', &lt;%= product.id %&gt;, &lt;%= product.active %&gt;)); products.sort() &lt;% end -%&gt; function categorySelected() { category_id = $('request_category_id').getValue(); options = $('request_product_id').options; options.length = 1; products.each(function(product) { if (product[0] == category_id &amp;&amp; product[3] == 1) { options[options.length] = new Option(product[1], product[2]); } }); if (options.length == 1) { $('product_field').hide(); } else { $('product_field').show(); } } document.observe('dom:loaded', function() { categorySelected(); $('request_category_id').observe('change', categorySelected); }); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload