ruby 新手,我在尝试从视图 (index.html.erb) 中执行 SH 脚本时偶然发现了以下问题。我做了以下事情:
app\views\tests\index.html.erb
<%= link_to 'Run it', :action=>'callthis' %>
app\controllers\tests_controller.rb
def callthis
puts "I was called!"
# system call here
end
我收到以下错误
ActionController::RoutingError (No route matches {:action=>"callthis", controller=>"tests"}):
app/views/tests/index.html.erb:20:in `_app_views_tests_index_html_erb__911976670__617626598'
app/views/tests/index.html.erb:4:in `each'
app/views/tests/index.html.erb:4:in `_app_views_tests_index_html_erb__911976670__617626598'
app/controllers/tests_controller.rb:7:in `index'
编辑:路线
tests GET /tests(.:format) tests#index
POST /tests(.:format) tests#create
new_test GET /tests/new(.:format) tests#new
edit_test GET /tests/:id/edit(.:format) tests#edit
test GET /tests/:id(.:format) tests#show
PUT /tests/:id(.:format) tests#update
DELETE /tests/:id(.:format) tests#destroy
编辑 2:感谢 Zippy,我看到 hello 是输出,但是,它也给了我以下错误:
Hello
Started GET "/tests/callthis" for 10.10.9.141 at Wed Mar 13 16:29:22 -0400 2013
Processing by TestsController#callthis as HTML
Completed 500 Internal Server Error in 6ms
ActionView::MissingTemplate (Missing template tests/callthis, application/callthis with {:handlers=>[:erb, :builde
:formats=>[:html], :locale=>[:en]}. Searched in:
* "/mnt/wt/ruby/wtrorp/app/views"
):
编辑3:
从“测试”的角度来看,我只想执行“测试控制器”中定义的“callthis”。该 def 将只是一个执行 SH 脚本的系统调用,并重定向到它生成的输出文件到文件系统。我希望将两个参数传递给它:一个字符串(在测试对象'test.script'中)和一个id(我想从浏览器会话中提取)。我意识到问题变得更加困难,并将更新标题问题以反映它:D
system(./callthis.sh test.script $my_id_var)
编辑4:
我希望从 sh 脚本生成一个文件,并重定向到一个静态文件。静态页面将捕获一个变量,并知道 sh 脚本生成的文件是哪个文件,以便它可以将其显示在该静态页面的框架中。也许脱离了这个问题的背景,但有人能指出我正确的方向吗?
提前感谢您的宝贵时间!