Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将表单值捕获到rails控制器中_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何将表单值捕获到rails控制器中

Ruby on rails 如何将表单值捕获到rails控制器中,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的表单中有这个单选按钮,我希望表单能够将其传递到模型/控制器中。如果选择了组织,则收件人将是组织。如果您使用的是表单之类的东西,请帮助我,我对Ruby还是新手_for@model_namehelper,然后params[:model_name][:recipients]将帮助您检索所需的值 而如果您使用的是form_tag helper,则可以使用params[:recipient]获得相同的值。好的,下面是哈希: <div class="col-md-10">

我的表单中有这个单选按钮,我希望表单能够将其传递到模型/控制器中。如果选择了组织,则收件人将是组织。如果您使用的是表单之类的东西,请帮助我,我对Ruby还是新手_for@model_namehelper,然后params[:model_name][:recipients]将帮助您检索所需的值


而如果您使用的是form_tag helper,则可以使用params[:recipient]获得相同的值。

好的,下面是哈希:

<div class="col-md-10">
            <%= f.radio_button :recipients, 'Resources', checked: true %> Resources<br />
            <%= f.radio_button :recipients, 'Organisations', checked: true %> Organisations<br />
        <br/>
        </br/>
</div>
Rails将该哈希分配给名为params的变量:

虽然可能有点难以理解,但params[broadcast]具有以下价值:

params = {"utf8"=>"✓", "authenticity_token"=>"YzFNk2cSNWU5DarWw4B1dMJYDX4mc==",
    "broadcast"=>{"subject"=>"Test email", 
    "message"=>"This is an organisation test email",
    "recipients"=>"Organisations",
    "country_id"=>"1", "skill_id"=>"", "id"=>["", "7", "5", "8"]}, "commit"=>"Send"}
要将该散列放入变量中,可以编写:

{
"subject"=>"Test email", 
"message"=>"This is an organisation test email",
"recipients"=>"Organisations", 
"country_id"=>"1", 
"skill_id"=>"", 
"id"=>["", "7", "5", "8"]
}
这相当于:

form_data = params["broadcast"]
该散列包含表单中的所有键/值对。每个键对应于表单中一个输入字段的name属性,该值就是该输入字段的值。您应该查看浏览器中的页面源代码,以检查表单创建的html。在html源代码中找到表单,并检查每个输入字段的name属性。另外,请参阅上的Rails指南,以获取由表单创建的html的一些示例

最后,您可以像下面这样以_data hash的形式获取收件人密钥的值:

form_data = {
    "subject"=>"Test email", 
    "message"=>"This is an organisation test email",
    "recipients"=>"Organisations", 
    "country_id"=>"1", 
    "skill_id"=>"", 
    "id"=>["", "7", "5", "8"]
}
因为form_数据相当于params[broadcast],所以可以在if语句中用params[broadcast]代替form_数据,给出:

if form_data["recipient"] == "Organisations"
  ...
  ...
end

params[:recipients]使用它捕获提交表单,然后查看启动服务器的窗口,并检查服务器输出。您应该看到如下内容:参数:{……}。将这一行复制并粘贴到你的问题中。Rails将该散列分配给变量params,该变量在任何操作方法中都可用。顺便说一下,在操作方法中,您可以始终编写put[ME]:{some_variable},然后在服务器窗口中查找输出。那么语法应该是什么样的呢?如果参数[:收件人]=Resources@MrNash,您需要发布我在第一条评论中要求的输出。将结果张贴在问题的底部。如果您这样做,我们可以确切地告诉您需要做什么。form元素的语法不排除form_标记吗?这就是我在使用form_data NameError undefined local variable或method form_data'时遇到的错误:`但是使用参数[broadcast][recipient]==组织似乎正在工作,谢谢you@MrNash,红宝石色,您可以随意创建一个变量:要将该散列放入变量中,您可以编写:form_data=params[broadcast]。那在你的密码里吗?你不能跳过步骤。因为我怀疑您不理解这意味着什么:params[broadcast][recipient],所以我创建了一个中间步骤来帮助您理解如何从嵌套哈希中获取信息。
if form_data["recipient"] == "Organisations"
  ...
  ...
end
   |<--form_data---->| 
   |                 |
if params["broadcast"]["recipient"] == "Organisations"
  ...
  ...
end