Недавно просто перенесли весь наш сайт в приложение RoR (путем переноса всех каталогов) в общую папку. Причина, по которой мы это сделали, заключается в том, что мы планируем создать наш сайт с новыми функциями и хотим начать хранить данные в db из разных форм.
В настоящее время все эти формы построены в HTML... Я смущен тем, как их перестроить в приложении RoR, чтобы сохранить его в базе данных.
Я настроил контроллер "подписки" и модель с соответствующими атрибутами, но смутился, когда буду дальше.
Вы можете попытаться извлечь формы в Views и загрузить их с помощью ajax на ваши статические шаблоны.
Предположим, вам нужно create form
для модели Subscription. Добавить в 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 %>
Обновите статический шаблон: добавьте div с именем класса 'new-subscription-container'.
Добавьте вызов ajax в ваш общедоступный шаблон:
<script type="text/javacsript">
$(function() {
$.ajax({type:"GET",url:"/subscriptions/new.js"});
});
</script>
Попробуй это. Чтобы спамить спан, добавьте капчу. ps: Не отлаживается, просто от головы.