我是rails和web开发的新手,所以请耐心等待。 我一直在尝试为站点构建各种自动部署系统。我在我的主页中有一个表单,它获取了site_name模型的名称字段,我试图将此名称(以及site_name实例)传递给另一个进行部署的控制器。但是,我无法正确传递名称。如何将实例变量从from传递给另一个控制器?
这些是我使用FYI的文件
home.html.erb
<div class="center jumbotron">
<h1>Welcome to the Sample App</h1>
<div class="input-group">
<%= form_for @site_name, url: {action: "instantiate", controller: "script_execute"}, html: {method: "get"} do |f| %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
<%= link_to "Sign up now!", instantiate_path, class: "btn btn-lg btn-primary" %>
</div>
script_execute_controller.rb(包含实例化操作)
class ScriptExecuteController < ApplicationController
def instantiate
site_name = @site_name.name
@hostname = 'myhostname'
@username = 'myusername'
@password = 'mypassword'
@cmd = "yes #{site_name} | ./denemescr.sh"
begin
ssh = Net::SSH.start(@hostname, @username, :password => @password)
res = ssh.exec!(@cmd)
ssh.close
puts res
end
redirect_to root_url
end
end
static_pages_controller.rb(主页的控制器)
class StaticPagesController < ApplicationController
def home
@site_name = SiteName.new
end
end
答案 0 :(得分:0)
您使用GET发布表单的原因是什么?将其更改为帖子并通过params [:name]在帖子路由到的操作中获取名称。您最初实例化实例变量,并且实际上是发布到您的方法实例化。