gpt4 book ai didi

javascript - Rails 根据下拉菜单选择填充文本区域

转载 作者:行者123 更新时间:2023-11-29 18:18:29 24 4
gpt4 key购买 nike

我有一个包含电子邮件模板的模型(名为模板);该模型只有模板的简称 (:name),然后是完整的模板本身 (:content)。用户应该能够从下拉列表中选择一个模板,然后文本区域应该显示模板的内容。这应该在提交表单之前发生。

我认为我可以做到这一点的一种方法是使用 jQuery。到目前为止,在我的表单中,我正在检测选择,然后用测试消息填充文本区域。我不确定如何返回选择并将模板的内容放入文本区域。非常感谢任何帮助。

这是我的表格:

<%= form_for :message, :url => send_prod_status_path(@incident), :html => {:method => :get} do |f| %>

<div class="field">
<%= f.label :template %> <%= f.collection_select(:template_id, ::Template.all, :id, :name, prompt: "Choose a template") %>
</div>

<script>
$("select").change(function(){
$("textarea").text("Test")
});
</script>

<div class="field">
<%= f.label :prod_status %>
<%= f.text_area :prod_status %>
</div>



<div class="actions">
<%= f.submit "Send ProdStatus" %>
</div>
<% end %>
~

编辑:如果重要的话,这是 Rails 3.2

最佳答案

您必须对您的服务器进行 AJAX 调用以请求实际的 Template.text

类似于(代码简化且未经测试):

# templates_controller.rb
def show
template = Template.find(params[:id])
render :text => template.content
end

# form.html.erb
<script>
$("select").change(function(){
$.get(
"/templates/" + $("select option:selected").attr("value"),
function(data) {
$("textarea").text(data);
}
);
});
</script>

更新:完整的 JS 方法

您还可以将所有的Templates 信息存储在一个JS 对象中,并使用它来刷新textarea

类似于(代码简化且未经测试):

# form.html.erb
<script>
var templates = [<%= ::Template.all.map(&:to_json).join(",") %>];

$("select").change(function(){
var template_id = $("select option:selected").attr("value");
var template_content = get_template_content(template_id)
$("textarea").text(template_content);
});

function get_template_content(template_id){
// to be implemented ...
return template_content;
}
</script>

关于javascript - Rails 根据下拉菜单选择填充文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957497/

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