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:
「tests」ビューからは、「testscontroller」で定義された「callthis」を実行することだけを考えています。その def は、SH スクリプトを実行するためのシステム コールにすぎず、生成された出力ファイルをファイル システムにリダイレクトします。文字列(テストオブジェクト「test.script」にあります)とID(ブラウザセッションから取得したい)の2つの引数を渡すことを検討しています。問題が非常に難しくなったことに気づき、それを反映するようにヘッダーの質問を更新します:D
system(./callthis.sh test.script $my_id_var)
編集4:
shスクリプトからファイルを生成し、静的にリダイレクトしようとしています。静的ページは変数をキャッチし、sh スクリプトが生成したファイルを認識して、その静的ページのフレームに表示できるようにします。この質問の文脈から外れているかもしれませんが、誰かが私を正しい方向に向けることができますか?
お時間をいただきありがとうございます。