【问题标题】:how to "get" with Ruby on rails form如何使用 Ruby on rails 表单“获取”
【发布时间】:2020-02-11 04:25:10
【问题描述】:

我尝试从我创建的列表中获取 2 个玩家,我只需要获取关于这 2 个玩家的所有信息(名称、描述等),一旦我选择了这两个玩家,我需要被重定向到/战斗路径。我的表单不起作用,我不明白为什么。

我在<%= form_tag ("/fight", :method => "get") do %>行渲染模板时遇到语法错误

有人可以帮帮我吗?

这是我的看法:

<%= form_tag ("/fight", :method => "get") do %>
  <%= label_tag :player1 %>
  <%= select_field :character, @characters.collect{|u| [u.name, u.id]} %>
  <%= label_tag :playe2 %>
  <%= select_field :character, @characters.collect{|u| [u.name, u.id]} %>
  <%= submit_tag 'Fight' %>
<% end %>

我的 pages_controller

def index 
  @characters = Character.all
end

还有我的路线

get 'fight' => 'pages#index'

【问题讨论】:

  • “不起作用”是什么意思?更加详细一些。会发生什么,应该发生什么?你有什么错误吗?什么?
  • @arieljuod OP 想说被选中的玩家在提交时没有战斗
  • Oups 对不起,我有错误:在我的行“ "get") do %>"
  • 编辑问题而不是在评论部分发布其他信息
  • 我认为你想要一个submit_tag 或其他东西而不是&lt;%= form.submit 'Fight' %&gt;form 没有在任何地方定义

标签: ruby-on-rails ruby forms ruby-on-rails-3


【解决方案1】:

由于方法form_tag和括号中提供的参数之间提供了空格而发生错误,应该是这样的,

form_tag("/fight", :method => "get")

你也可以这样写,

<%= form_tag fight_path, method: "get" do %>

<%= form_tag url: "fight", method: "get" do %>

【讨论】:

  • 这可能是一种“更好”的编写方式,但它应该得到相同的结果?...我不明白 OP 的错误,我不知道为什么这会解决它.
  • 为什么不能在方法调用和参数之间放一个空格?这看起来很奇怪
  • @Виктор 这是你应该知道的基本知识,阅读here
  • 感谢您的回答,我更改了行,但现在出现错误“未定义的方法 `select_field'”,我应该使用 select_tag 而不是 select_field 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 2014-02-21
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
相关资源
最近更新 更多