我对Rails相对较新,我一直在论坛上寻找看似永远的东西,但我找不到解决问题的方法。这可能只是因为我作为开发人员缺乏经验,但我很感激任何人都可以提供的任何帮助。
我正在构建一个具有轮次模型的应用程序,每轮都有许多投资者(这是一个单独的模型)。此外,还有一个Stock模型,其中包含有关投资者购买的股票类型的各种数据。已经建立了模型之间的所有必要关系。
当我创建新投资者时,我试图根据已选择的股票类型自动填写表单。这是表格:
//app/views/investors/new.html.erb
<%= form_for(@investor) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :security_name %>
<%= f.collection_select :stock_type, Stock.all, :id, :security_name, prompt: true, class: 'form-control' %>
<%= f.label :share_price %>
<%= f.number_field :share_price, :readonly => true, class: 'form-control'%>
<%= f.submit "Add Investor", class: "btn btn-primary" %>
<% end %>
表单中的第一个字段是一个下拉框,允许用户选择投资者购买的股票类型。这是正常运作的。
我无法弄清楚(以及我需要帮助的是)如何自动将number_field的值设置为所选股票类型的股价。我知道它需要某种形式的Javascript,但我尝试过的所有东西都没有产生功能输出。
我遇到的部分问题是,当我阅读对其他人的问题的回复时,我并不完全确定在何处放置已建议的代码 - 因此这些信息也会有所帮助。
使用Rails版本4.2.2
答案 0 :(得分:0)
假设share_price的逻辑很简单。我只想使用数据字段将该值添加到select的所有标记中。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="http://www.freesfx.co.uk/rx2/mp3s/5/16797_1460740933.mp3">SOUND-1</a>
<script>
// Add buttons and otherwise manipulate the dom
function LinkToAudio(p_element, p_callback) {
var audioURL = $(p_element).attr('href');
var audioName = $(p_element).text();
// Dom for the audio tag
var audioTag = '<audio src="' + audioURL + '" type="audio/mpeg" preload="none"></audio>';
// Dom for the play button
var audioPlayButton = '<button id="audio">Play Sound above</button>';
// Add a audio tag and play button after the element
$(p_element).after('<br/>' + audioTag + '<br/>' + audioPlayButton + '<br/>');
// Add the callback to the button
$(p_element).nextAll('button:first').on('click', p_callback);
}
// Define our button click handler
function AudioButtonHandler(evt) {
// Once clicked, find the first audio tag located before the button
var relativeAudioTag = $(evt.target).prevAll('audio:first')[0];
console.log(evt.target, relativeAudioTag);
// Play the sound!
relativeAudioTag.play();
}
var thisAudio = $('a[href$="mp3"]:last');
LinkToAudio(thisAudio, AudioButtonHandler);
</script>
<a href="http://www.freesfx.co.uk/rx2/mp3s/5/16983_1461335348.mp3">SOUND-2</a>
<a href="http://www.freesfx.co.uk/rx2/mp3s/4/16539_1460655601.mp3">SOUND-3</a>
<script>
// Add buttons and otherwise manipulate the dom
function LinkToAudio(p_element, p_callback) {
var audioURL = $(p_element).attr('href');
var audioName = $(p_element).text();
// Dom for the audio tag
var audioTag = '<audio src="' + audioURL + '" type="audio/mpeg" preload="none"></audio>';
// Dom for the play button
var audioPlayButton = '<button id="audio">Play Sound above</button>';
// Add a audio tag and play button after the element
$(p_element).after('<br/>' + audioTag + '<br/>' + audioPlayButton + '<br/>');
// Add the callback to the button
$(p_element).nextAll('button:first').on('click', p_callback);
}
// Define our button click handler
function AudioButtonHandler(evt) {
// Once clicked, find the first audio tag located before the button
var relativeAudioTag = $(evt.target).prevAll('audio:first')[0];
console.log(evt.target, relativeAudioTag);
// Play the sound!
relativeAudioTag.play();
}
var thisAudio = $('a[href$="mp3"]:last');
LinkToAudio(thisAudio, AudioButtonHandler);
</script>
然后在表单上方或适当的investor.js.coffee文件中的javascript snipet中。
#!/usr/bin/perl
use strict;
my $file = 'file.txt';
my $mark = '0';
open my $f, "<$file" or die "Error open file: $!\n";
my $counter=0;
while(my $line = <$f>) {
if($line =~ /$mark/) {
$counter++;
}
}
if($counter) {
my $body = "status $mark has been recorded $counter times";
my $cmd_email = "echo $body | mailx -s \"error occurring\" tneal01\@gmail.com";
system($cmd_email) == 0 or die "Error sending email -- $!";
}
除了潜在的语法错误。这应该让你接近你想要的。