gpt4 book ai didi

ruby-on-rails - 如何将工作 rails 联系形式转换为 Bootstrap 模式?

转载 作者:行者123 更新时间:2023-12-01 06:35:22 28 4
gpt4 key购买 nike

我目前有一个工作 rails 联系表(取自另一个 SO 答案),可在/contact 上找到,它使用 Controller 、模型和邮件程序(Mandrill)。它在 Controller 中响应 new 和 create 路由,并且仍然使用 activemodel 功能。该表单不使用ajax。

我现在需要尝试让我的联系表单在主页上工作,而不是通过模式弹出窗口的/contact 页面。

我已经阅读了许多关于模态的 SO 查询,但似乎都与让模态做特定的事情有关 - 而不是创建模态形式来模仿正常形式。

首先,我在主页上添加了一个工作模式。

当我尝试将表单添加到主页模型中时,我遇到了方法错误,因为表单是 home_controller 的一部分。在将我的新和创建 Controller 操作复制到我的主 Controller 后,我意识到表单只是隐藏了,并且在页面加载时仍在运行(通过索引操作)。
添加 @message = Message.new进入索引操作似乎没有帮助 - 我不想在模态负载上这样做吗?

以下是联系页面中我的工作表单的主要移动部分,以及主页中的工作模式框 - 我如何合并两者并保留我拥有的功能?

这是联系人 Controller :

#/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{.+@.+\..+} }, :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 的疑问时,我只是避免使用 ajax,因为在 rails 3.2 上尝试它时感觉困难和缺乏进展 - 如果将它变成一个 ajaxified 实际上更容易,我会很高兴使用它形式 ?

最佳答案

看来我毕竟离得不远了!

在#rubyonrails channel 的指针之后,答案是:

1)将表单原样复制到模态中。 (请注意,可能需要不同的样式 - 但这个答案提供了所需的功能)。

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

我曾尝试过与此非常相似的方法,但必须引入另一个错误,因此绕过了正确的解决方案。

关于ruby-on-rails - 如何将工作 rails 联系形式转换为 Bootstrap 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15469112/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com