您可以尝试将表单提取到视图中,并通过 ajax 将它们加载到您的静态模板上。
假设,您需要为订阅模型创建create form。
向 SubscriptionController 添加两个操作:
class SubscriptionController < ApplicationController
skip_before_filter :verify_authenticity_token
# action to add page form via ajax
def new
@subscription = Subscription.new
end
# submit form
def create
subscription = Subscription.new(subscription_params(params))
subscription.create!
render :file => 'public/greetings.html' and return
end
注意:您需要将resources :subscriptions 添加到routes.rb 文件中。
创建部分文件,它将通过 ajax 渲染表单部分:
#app/views/subscriptions/new.js.erb
$(".new-subscription-container").update("<%= escape_javascript(render('subscriptions/form')) %>");
创建部分表单:
#app/views/subscriptions/_form.html.erb
<%= form_for @subscription, url: {action: "create"} do |subscription_form| %>
<%= subscription_form.text_field :user_name %> <!-- field from model -->
<!-- ... other fields -->
<%= submit_tag "Create!" %>
<% end %>
更新您的静态模板:添加类名为“new-subscription-container”的 div。
将 ajax 调用添加到您的公共模板:
<script type="text/javacsript">
$(function() {
$.ajax({type:"GET",url:"/subscriptions/new.js"});
});
</script>
测试一下。要屏蔽垃圾邮件,请添加验证码。
p.s.:没有调试,只是从头开始。