Ruby on rails 将变量过帐到另一个控制器

Ruby on rails 将变量过帐到另一个控制器,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个欢迎控制器/视图 在index.html.erb上,我有一个包含一个值的简单表单: <%= form_tag do %> <div> <%= label_tag(:zip, "Enter Zipcode to search in:") %> <%= text_field_tag(:zip) %> </div> <%= submit_tag("Search") %> <% end %> 点击

我有一个欢迎控制器/视图

在index.html.erb上,我有一个包含一个值的简单表单:

<%= form_tag do %>
<div>
<%= label_tag(:zip, "Enter Zipcode to search in:") %>
  <%= text_field_tag(:zip) %>
 </div>
  <%= submit_tag("Search") %>
<% end %>

点击submit按钮后,我想将zip变量传递给另一个名为“theaters”的控制器。变量不需要保存在任何类型的模型中,它只是用于在剧院控制器中执行API调用

最简单的方法是什么

谢谢

试试这个:

<%= form_tag({controller: "theaters", action: "index"}) do %>
<div>
    <%= label_tag(:zip, "Enter Zipcode to search in:") %>
    <%= text_field_tag(:zip) %>
</div>
<%= submit_tag("Search") %>
<% end %>


希望有帮助。

在剧院控制器中为您的方法创建一个路由,假设您的方法名为get\u zip

post '/get_zip' => 'theaters#get_zip', as: "zip"
创建您的表单

<%= form_tag(url: zip_path, method: :post) do %>
  <div>
    <%= label_tag(:zip, "Enter Zipcode to search in:") %>
    <%= text_field_tag(:zip) %>
  </div>
  <%= submit_tag("Search") %>
<% end %>

您希望将请求定向到剧院控制器中的哪个操作?嗯,这给了我一个无路由匹配[POST]“/”路由error@Alex你有没有在routes.rbyes中把这个
post'/get_-zip'=>“theaters#get_-zip”写为:“zip”
line!rb是根路由(wlecome#index)和that@Alex你能发布你的routes.rb文件以及编辑你的问题所得到的全部错误吗?
root“welcome#index”参考资料:theaters post'/get#u zip'=>“theaters#get#u zip”,如:“zip”
无路线匹配[post]/“zip#u路径post/get#zip(:格式)剧院#get#zipSo这也需要剧院控制器中的create方法?这样,您只需将文本字段的值传递给
剧院#索引
操作。在
索引
操作中,
参数[:zip]
包含文本字段的值。默认情况下,
form_标记
方法是post,因此
theaters#index
应该在routes.rb中进行post。因此,如果我有一个create方法,将参数分配给create.html.erb中输出的变量,则此方法可以工作。我觉得这不是最好的做法。。?我可以将其路由到其他方法吗?您必须使用http方法在routes.rb中声明您的操作,如
get
post
,等等。由于默认情况下,
form_tag
方法是
post
,因此在routes.rb中必须有一个post
theaters#index
行。显然,您可以使用
get
方法,但是您需要将您的路由声明为
get
,并在
form_标记中指定这一点,以及
form_标记({controller:“theaters”,action:“index”},method::get)do…
这样您就可以获取并读取
参数[:zip]
剧院控制器#索引中
def get_zip
  @zip = params[:zip]
  #your logic
end