Ruby on rails 将变量过帐到另一个控制器
我有一个欢迎控制器/视图 在index.html.erb上,我有一个包含一个值的简单表单: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 %> 点击
<%= 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中必须有一个posttheaters#index
行。显然,您可以使用get
方法,但是您需要将您的路由声明为get
,并在form_标记中指定这一点,以及form_标记({controller:“theaters”,action:“index”},method::get)do…
这样您就可以获取并读取参数[:zip]
在剧院控制器#索引中
def get_zip
@zip = params[:zip]
#your logic
end