【问题标题】:How to get the value of form fields from controller Rails on Ruby如何从控制器 Rails on Ruby 获取表单字段的值
【发布时间】:2016-04-08 01:16:50
【问题描述】:

在项目新视图中,我有一个带有 text_field 的表单

  <%= form_for @project do |f| %>

    <h4>
                    <label for = "projectName">Title(required)</label>

                    <%= f.text_field :projectName, :maxlength => 50 %>
                </h4>
<%end%>

我正在尝试获取控制器上的值,

params[:projectName]

但我的日志总是为零

注意

我的项目位于 com/a/b/c/project

因此我尝试调用

params[:com_a_b_c_projectName]

我的日志仍然为零

任何帮助都会很棒!

【问题讨论】:

  • 试试params[:project][:projectName]
  • 另外,我建议将binding.pry 放在控制器中,您将立即看到所有参数。
  • 首先,您应该停止使用params[:com_a_b_c_projectName] 并正确设置form_for 代码,因为我对您的其他问题的回答(和Rails 指南)表明:) 将其排除在外将有助于设置可以说,在尝试解决更多问题之前,基础是正确的
  • @PetrGazarov params[:project][:projectName] 仍然给我 nil
  • @sixty4bit 我尝试按照您所说的设置路径,但它一直向我抛出未定义的方法 `com_a_b_c_com_a_b_c_projects_path' #:0x922d7d8> 路径错误:(我还更新了我的参数参数。 require(:project).permit(:projectName, :briefDesc, :whatSection, :challengers, :status, :valueProposal, :maturityLevel,:tag_ids =>[])#tag_ids: []

标签: ruby-on-rails params form-for


【解决方案1】:

rails 约定是,它会自动将参数包装在表单中。所以应该是params[:project][:projectName]。 阅读第 7.1 章中的详细信息here

【讨论】:

  • 您能否提供特定请求的服务器日志?看起来像这样Started GET "/tests/new" for ::1 at 2016-04-07 23:43:03 -0400 Processing by TestsController#new as HTML Rendered tests/_form.html.erb (7.8ms) Rendered tests/new.html.erb within layouts/application (9.2ms) Completed 200 OK in 35ms (Views: 34.2ms | ActiveRecord: 0.0ms)
【解决方案2】:

如果您使用的是 rails 4 或更高版本,请确保在控制器中设置 params.require 以接受来自视图的参数。

设置后,您可以在params[:project][:projectName] 中找到参数。还要制作一个提交按钮(&lt;%= f.submit %&gt;)来提交控制器中的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多