Rails 3.2创建一个在每个页面的页脚中使用的表单

我想创建一个用于在我的网页页脚中注册邮件列表的表单。 我所做的是创建一个部分,在应用程序布局的页脚中呈现这个小forms。

以下是部分代码:

  

prohibited this mailing_list from being saved:




我还在学习rails,以便从脚手架中生成代码。 从我收集的内容中,我需要使用@mailing_list = MailingList.new来实例化@mailing_list变量,但问题是邮件列表控制器中的新操作不会被调用,因为我不一定要访问该页面。 此表单位于每个页面的页脚中。

创建此表单的正确方法是什么? 有没有办法在不调用每个控制器中的MailingList.new的情况下执行此操作?

谢谢!

将表单更改为此

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

所以你不必担心实例变量。 您还应传递remote: true以便通过ajax提交表单。 要显示错误, create.js.erbapp/views/mailing_lists下创建一个名为create.js.erb的文件并添加以下内容(只是在表单前附加错误的简单脚本)

 $('.error-messages').remove(); <% if @mailist_list.errors.any? %> $('#new_mailing_list').before('
    '); <%= @mailing_list.errors.full_messages.each do |msg| %> $('.error-messages').append('
  • <%= escape_javascript msg %>
  • '); <% end %> <% end %>

    您可以将form_for方法更改为:

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

    然后,您不再需要为每个页面初始化@mailing_list

    需要注意的是,您无法在页脚中呈现错误。 您需要使用问题中的代码创建new.html.erb视图,如果在创建操作中保存时出现任何错误,则可以呈现该视图。