4

我目前有一個使用控制器,模型和郵件程序(Mandrill)的工作軌道聯繫表格(摘自另一個SO答案),可用於/聯繫。它響應新的並在控制器中創建路由,並仍使用活動模型功能。該表單不使用ajax。如何將工作導軌聯繫表單轉換爲引導模式?

我現在需要嘗試使我的聯繫表單在主頁上工作,而不是通過模態彈出窗口的/聯繫頁面。

我已經閱讀了許多關於模態的SO查詢,但似乎都與獲取模式來執行特定的事情有關 - 而不是創建模態形式來模仿正常形式。

要開始我添加了一個工作模式,到主頁。

當我嘗試將表單添加到主頁模型中時,由於表單是home_controller的一部分,我遇到了方法錯誤。在將新的和創建控制器操作複製到我的家庭控制器後,我意識到,表單只是隱藏的,並且在頁面加載時(通過索引操作)仍然在運行。 將@message = Message.new添加到索引操作中似乎沒有幫助 - 並且我不希望這種模式加載?

下面是我的聯繫頁面中工作表單的主要移動部分,以及主頁上的工作模式框 - 如何合併兩者並保留我擁有的功能?

這裏是接觸控制:

#/app/controllers/contact_controller.rb 
class ContactController < ApplicationController 

def new 
    @message = Message.new 
end 

def create 
    @message = Message.new(params[:message]) 

    if @message.valid? 
    NotificationsMailer.new_message(@message).deliver 
    redirect_to(root_path, :notice => "Message was successfully sent.") 
    else 
    flash.now.alert = "Please fill all fields." 
    render :new 
    end 

end 
end 

消息模型

#app/models/message.rb 
class Message 

    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :name, :email, :subject, :body 

    validates :name, :email, :subject, :body, :presence => true 
    validates :email, :format => { :with => %r{[email protected]+\..+} }, :allow_blank => true 

    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 

end 

和視圖:

<%= form_for @message, :url => contact_path do |form| %> 
    <fieldset class="fields"> 
    <div class="field"> 
     <%= form.label :name %> 
     <%= form.text_field :name %> 
    </div> 

    <div class="field"> 
     <%= form.label :email %> 
     <%= form.text_field :email %> 
    </div> 
    <div class="field"> 
     <%= form.label :subject %> 
     <%= form.text_field :subject %> 
    </div> 

    <div class="field"> 
     <%= form.label :body %> 
     <%= form.text_area :body %> 
    </div> 
    </fieldset> 

    <fieldset class="actions"> 
    <%= form.submit "Send" %> 
    </fieldset> 
<% end %> 

最後在我的主頁我有這樣的模式(不包含表格)

<div class="modal fade" id="modal_contact_form"> 

    <div class="modal-header"> 
    <a class="close" data-dismiss="modal">&times;</a> 
     <h3>Contact Form</h3> 
    </div> 
    <div class="modal-body"> 
    <p>Test Content for Modal</p> 
    </div> 
    <div class="modal-footer"> 
</div> 
</div> 

它是此<li><a href="#modal_contact_form" data-toggle="modal">contact</a></li>

我嘗試叫過多種多樣得到這個工作直到這一點 - 主要的問題,我需要身邊讓我的頭(我認爲)是,形式是由home_controller上的索引操作加載 - 理想情況下,我想我仍然想使用我的contact_controller中的邏輯?

任何意見和建議表示讚賞 - 在這一點上,我想知道是否有一種簡單的方法只是將表單移入一個模式或不!

乾杯,

米茲帕

注:在迴應查詢時我對阿賈克斯,我只是避免AJAX由於感知困難,缺乏與嘗試它在軌道上3.2的進步 - 我會很高興使用它,如果它實際上更容易把它變成ajaxified形式?

回答

0

看來我畢竟不是很遠!

從#rubyonrails信道的指針後,回答是:

1)按原樣複製的形式,進模態。 (注意,可能需要不同的樣式 - 但這個答案給出了所需的功能)。

2)要添加@message = Message.new入索引操作上我home_controller.rb

我曾試圖與此非常相似的東西,但必須引入其他錯誤,從而繞過了正確的解決方案。

+0

他們的路線怎麼樣?你能在這裏張貼嗎? – monteirobrena 2013-08-07 02:43:26