静态网站纳入RoR应用程序

时间:2014-04-06 01:24:36

标签: html ruby-on-rails ruby database forms

最近刚刚将我们的整个网站转移到了一个RoR应用程序(通过将所有目录引入)到公共文件夹中。我们这样做的原因是我们计划使用新功能构建我们的站点,并希望从各种表单开始在数据库中存储数据。

目前所有这些表单都是用HTML构建的...我对如何在RoR应用程序上重建这些表单感到困惑,因此将其保存到数据库中。

我已经设置了一个“订阅”控制器和具有适当属性的模型,但在下一步我感到困惑。

1 个答案:

答案 0 :(得分:0)

您可以尝试将表单提取到Views,并通过静态模板上的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 %>

更新您的静态模板:使用classname&#39; new-subscription-container&#39;添加div。

向您的公共模板添加ajax调用:

<script type="text/javacsript">
  $(function() {
    $.ajax({type:"GET",url:"/subscriptions/new.js"});
  });
</script>

测试一下。要发送垃圾邮件,请添加验证码。 p.s。:没有调试,只是从头开始。