【发布时间】:2015-05-02 00:54:53
【问题描述】:
我正在尝试在 Python 脚本中使用来自 rails 控制器的表单输入。我的 rails(4.2.1 版)应用程序上有一个表单,它接收一个 url,然后我想在 Python 脚本中使用该 url。我是 Rails 新手,不知道该怎么做。我的应用程序已经能够接受表单输入并将它们呈现在页面上,并且能够调用 Python 脚本并运行它,但我需要将它们链接在一起。
这是目前为止的控制器代码:
class ContestsController < ApplicationController
def index
value = %x(python /Users/my/Desktop/rails_test.py 2>&1)
render :text => value
@contests = Contest.all
end
def new
@contest = Contest.new
end
def create
@contest = Contest.new(contest_params)
if @contest.save
redirect_to contests_url
else
render 'new'
end
end
private
def contest_params
params.require(:contest).permit(:site, :contest_url)
end
end
我的 Python rails_test.py 脚本是:
#!/bin/bash
print "Python script works!"
#url = last :contest_url param from rails app
#print url
尝试 #1:
我将rails代码修改为:
value = %x(python /Users/jdesilvio/Desktop/rails_test.py #{Shellwords.escape(params[:contest_url])} 2>&1)
我将 Python 脚本修改为:
#!/Users/me/anaconda/bin/python2.7 python
import sys
print "Python script works!"
print "Url: ", sys.argv[1]
输出是:
Python script works! Url:
我的表格是:
<%= form_for @contest do |f| %>
<div>
<%= f.label :site %>
<%= f.text_field :site %>
</div>
<div>
<%= f.label :contest_url %>
<%= f.text_field :contest_url %>
</div>
<%= f.submit %>
<% end %>
【问题讨论】:
标签: python ruby-on-rails ruby ruby-on-rails-4