Привет, что я пытаюсь сделать, это запустить сценарий bash, когда кто-то нажимает на изображение. Это делается в представлении .erb в Ruby on rails, и на сервере, на котором это работает, установлен php. Спасибо за чтение и удачного дня!
<%= image_tag("longbeards.jpg", :class => "homepage-leftsidepicture", onclick:'<?php exec("/home/ncs/slowloris.sh");?>' ) %>
Обновлено: мне не удалось использовать оператор onclick из первого полученного ответа. Однако я создал функцию javascript, которая вызывает оператор. Теперь я получаю эту ошибку, которая говорит: "Нет маршрута соответствует {: action =>" call_script ",: controller =>" script "}, отсутствуют необходимые ключи: [: script_id]"






Вам нужно будет создать действие контроллера, которое вызывает сценарий BASH, поэтому в вашем контроллере:
script_controller.rb:
class ScriptController < ApplicationController
def call_script
`/home/ncs/slowloris.sh`
end
end
Затем вам нужно будет создать маршрут к этому действию, например:
routes.rb:
get 'call_script' => 'script#call_script', as: 'call_script'
Наконец, вам нужно будет вызвать эту новую конечную точку из вашего образа.
<%= image_tag("longbeards.jpg", :class => "homepage-leftsidepicture", onclick: "window.open('#{call_script_url}', '_blank')" ) %>
Предполагается, что вы используете rails 5.x.x?
Я не использую считать для Rails 5.
Хорошо, я сделал то, что вы сказали в своем ответе, и получил эту ошибку: "Нет маршрута соответствует {: action =>" call_script ",: controller =>" script "}, отсутствуют необходимые ключи: [: script_id]"
У меня там была синтаксическая ошибка, отсутствовал: в 'as', и я исправлял, используя <% =%> в window.open. Я обновил ответ и подтвердил, что это работает в Rails 4.
Хорошо, это определенно устранило проблемы с отсутствующими необходимыми ключами. Таким образом, я смог добраться до функции сценария вызова в моем контроллере сценария. Однако я не верю, что мой скрипт работает, когда я попадаю на эту веб-страницу. Будет ли в этом случае работать system ()?
Сотрите последний комментарий, поскольку я только что заметил, что он запускает мой сценарий bash. Хотя он запустит только первую строку и остановится на ней
Вы не можете запустить PHP-код из HTML-элемента в браузере. PHP работает только на сервере. Атрибут
onclickбудет запускать только javascript (в браузере)