Rails 3.2 create a form that's used in the footer of every page

前端 未结 2 645
时光说笑
时光说笑 2021-01-17 03:44

I want to create a form that\'s used to sign up to a mailing list in the footer of my webpage. What I did was create a partial that renders this small form in the footer of

相关标签:
2条回答
  • 2021-01-17 03:55

    change your form to this

    <%= form_for MailingList.new, html: { remote: true } do |f| %>
    

    so you don't have to worry about instance variables. You should also pass remote: true so the form is submitted via ajax. To show error, create a file called create.js.erb under app/views/mailing_lists and add the following (just a simple script that appends the errors before the form)

    $('.error-messages').remove();
    <% if @mailist_list.errors.any? %>
      $('#new_mailing_list').before('<ul class="error-messages"></ul>');
      <%= @mailing_list.errors.full_messages.each do |msg| %>
        $('.error-messages').append('<li><%= escape_javascript msg %></li>');  
      <% end %>
    <% end %>
    
    0 讨论(0)
  • 2021-01-17 04:17

    You can change your form_for method to this:

    <%= form_for :mailing_list, url: mailing_lists_path do |f| %>
    

    Then you no longer need to initialize @mailing_list for every page.

    The caveat is that you cannot render the errors in the footer. You would need to create a new.html.erb view using the code in the question, that can be rendered if there are any errors when saving in the create action.

    0 讨论(0)
提交回复
热议问题