我正在关注Rails Tutorial by Michael Hart,我已经在第7章了。但我现在想做一些不同的事情,教程没有教导。我想在我的网页中运行一个脚本文件。我怎么能这样做?我在这里看到其他帖子说使用Sinatra,但由于我遵循本教程,我认为使用它并不是一个好主意,因为它可以使一切与教程不同。
以下是我想在我的网页上运行的简单脚本:
#Somando idades
def soma_vetor_excluindo(index,vet)
soma = 0
for i in 0..9
if(i!=index)
soma = soma + vet[i].to_i
end
end
return soma
end
def soma_vetor(vet)
soma = 0
for i in 0..9
soma = soma + vet[i].to_i
end
return soma
end
def maior_vetor(vet)
maior = 0
for i in 0..9
if(maior < vet[i])
maior = vet[i]
end
end
return maior
end
idades = (0..9).collect{rand(99)+1}
soma_idades = (0..9).collect{0} soma = 0
print "#{idades} \n"
for i in 0..9
soma_idades[i] = soma_vetor_excluindo(i,idades)
end
print "#{soma_idades} \n"
div = soma_vetor(soma_idades) / 9
resp = div - maior_vetor(soma_idades)
puts "#{resp}"
答案 0 :(得分:3)
最简单的方法是制作方法soma_vetor_excluindo
,soma_vetor
,maior_vetor
等控制器方法,因此当您通过表单或ajax发送数据时,动作将触发,计算值并返回结果。
知道了这一点,你可以拥有一个控制器,比方说MathController.rb
,在其中,soma_vetor_excluindo
方法:
class MathController < ApplicationController
def soma_vetor_excluindo
end
def soma_vetor
end
def maior_vetor
end
end
要访问此内容,您可能需要route
,因此在routes.rb
上添加以下内容:
get 'math/soma_vetor_excluindo/:index/:vet', to 'math#soma_vetor_excluindo'
get 'math/soma_vetor/:vet', to 'math#soma_vetor'
get 'math/maior_vetor/:vet', to 'math#maior_vetor'
这意味着当您的浏览器点击localhost/math/soma_vetor_excluindo/1/2
或其他网址时,它会向控制器发送一个get请求,调用soma_vetor_excluindo
方法并输入参数params[:index]
和{ {1}},理论上脚本会运行。
问题是,您可以通过很少的工作来调整控制器以执行此类操作。
答案 1 :(得分:0)
我认为最简单的解决方案是为每个脚本加载一个页面。首先,您将脚本的路径添加到routes.rb
中,例如:
get 'scripts/your_script', to 'scripts#your_script
在控制器(app / scripts_controller.rb)中,您应该添加如下代码:
class ScriptsController < ApplicationController
#Somando idades
def soma_vetor_excluindo(index,vet)
soma = 0
for i in 0..9
if(i!=index)
soma = soma + vet[i].to_i
end
end
return soma
end
def soma_vetor(vet)
soma = 0
for i in 0..9
soma = soma + vet[i].to_i
end
return soma
end
def maior_vetor(vet)
maior = 0
for i in 0..9
if(maior < vet[i])
maior = vet[i]
end
end
return maior
end
def your_script
idades = (0..9).collect{rand(99)+1}
soma_idades = (0..9).collect{0}
soma = 0
answer = "#{idades} \n"
for i in 0..9
soma_idades[i] = soma_vetor_excluindo(i,idades)
end
answer << "#{soma_idades} \n"
div = soma_vetor(soma_idades) / 9
resp = div - maior_vetor(soma_idades)
answer << "#{resp}"
render(text: answer)
end
end
当您访问页面scripts/your_script
时,它应该呈现您的脚本结果的纯文本演示文稿。
虽然这不是最优雅的解决方案,但它可以解决您的问题。