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