softwaregravy/lancaster

View on GitHub
app/views/subscriptions/_form.html.erb

Summary

Maintainability
Test Coverage
<%= form_for(@subscription) do |f| %>
  <% if @subscription.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@subscription.errors.count, "error") %> prohibited this subscription from being saved:</h2>

      <ul>
      <% @subscription.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <% if current_user.admin? %>
    <div class="field">
      <%= f.label :user_id %><br>
      <%= f.number_field :user_id %>
    </div>
  <% else %>
    <%= f.hidden_field(:user_id, value: current_user.id) %>
  <% end %>

  <select id='subscription_type'>
    <option value="0">Subscribe to Feed</option>
    <option value="1">Subscribe to Web Page</option>
  </select>

  <div id="feeds">
    <%= f.hidden_field(:subscribable_type, value: "Feed") %>
    <%= f.collection_select :subscribable_id, @feeds, :id, :display_name, {include_blank: true, disabled: lambda{|feed| @current_feeds.include? feed.id}} %>
  </div>
  <div id="web_pages" style="display: none;">
    <%= f.hidden_field(:subscribable_type, value: "WebPage") %>
    <%= f.collection_select :subscribable_id, @web_pages, :id, :display_name, {include_blank: true, disabled: lambda{|web_page| @current_web_pages.include? web_page.id}} %>
  </div>

  <%= f.hidden_field(:notification_preference, value: "sms") %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<%= javascript_tag do %>
  $(document).ready(function(){
    $('#subscription_type').on('change', function() {
      if ( this.value == '0')
      {
        $("#feeds").show();
        $("#web_pages").hide();
      }
      else
      {
        $("#feeds").hide();
        $("#web_pages").show();
      }
   });
  });
<% end %>