如何将工作导轨联系表单转换为引导模式?
我目前有一个使用控制器,模型和邮件程序(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">×</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形式?
看来我毕竟不是很远!
从#rubyonrails信道的指针后,回答是:
1)按原样复制的形式,进模态。 (注意,可能需要不同的样式 - 但这个答案给出了所需的功能)。
2)要添加@message = Message.new
入索引操作上我home_controller.rb
我曾试图与此非常相似的东西,但必须引入其他错误,从而绕过了正确的解决方案。
他们的路线怎么样?你能在这里张贴吗? – monteirobrena 2013-08-07 02:43:26