Запустить сценарий bash из onclick в представлении erb

Привет, что я пытаюсь сделать, это запустить сценарий 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]"

Вы не можете запустить PHP-код из HTML-элемента в браузере. PHP работает только на сервере. Атрибут onclick будет запускать только javascript (в браузере)

RiggsFolly 27.09.2018 01:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
184
1

Ответы 1

Вам нужно будет создать действие контроллера, которое вызывает сценарий 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?

Shane Callaghan 29.09.2018 00:42

Я не использую считать для Rails 5.

Billy Kimble 29.09.2018 20:57

Хорошо, я сделал то, что вы сказали в своем ответе, и получил эту ошибку: "Нет маршрута соответствует {: action =>" call_script ",: controller =>" script "}, отсутствуют необходимые ключи: [: script_id]"

Shane Callaghan 30.09.2018 16:56

У меня там была синтаксическая ошибка, отсутствовал: в 'as', и я исправлял, используя <% =%> в window.open. Я обновил ответ и подтвердил, что это работает в Rails 4.

Billy Kimble 30.09.2018 18:54

Хорошо, это определенно устранило проблемы с отсутствующими необходимыми ключами. Таким образом, я смог добраться до функции сценария вызова в моем контроллере сценария. Однако я не верю, что мой скрипт работает, когда я попадаю на эту веб-страницу. Будет ли в этом случае работать system ()?

Shane Callaghan 30.09.2018 21:12

Сотрите последний комментарий, поскольку я только что заметил, что он запускает мой сценарий bash. Хотя он запустит только первую строку и остановится на ней

Shane Callaghan 30.09.2018 21:26

Другие вопросы по теме