【问题标题】:my rails dropdown form generates nil no matter what is selected how do i fix it?无论选择什么,我的 rails 下拉表单都会生成 nil 我该如何解决?
【发布时间】:2014-07-29 19:37:06
【问题描述】:

我是 RoR 的新手,我一直在搜索和搜索,但似乎找不到解决方案。我有一个简单的表格:

<%= form_for @case do |f| %>
<%= f.select( :case, options_for_select([['CASE1','CASE1'],['CASE2','CASE2'],['CASE3','CASE3'],['CASE4','CASE4']])) %>
<% end %>

那是在我的导航栏中。它不基于数据库中的任何表。

控制器:

class MyAppController < ApplicationController
before_filter :initialize_remote_user

   def self.search(name)
     @results = MyApp.search(params[:name])
     @case = params[:case]
    end

   def result
     @results =  MyApp.where("name = ?",params[:name]).order("item_scan_date ASC")
     puts @results.inspect
   end

   def update
    end

   def change
     end

   def show
    @case = params[:case].inspect
   end

   def create
   end

   def new
   end

   def index
   end

  private

  def name_params
     params.require(:name).permit(:name)
  end

  def case_params
     params.require(:case).permit(:case, :id)
  end

当我有@case = params[:case].inspect 时,它没有任何错误,但它不会从&lt;%= form_for @case do |f| %&gt; 中提取数据

我试过了

def show
@case = Case.find(params[:case])
end

但在@case = Case.find(params[:case]) 出现NameError uninitialized constant MyAppController::Case 错误

除了nil 之外,我似乎无法让@case 拉出任何东西

如果我在def show 中有@case = params[:case],我会在&lt;%= form_for @case do |f| %&gt; 得到'ArgumentError First argument in form cannot contain nil or be empty error

【问题讨论】:

  • 作为一种风格说明,where(name: params[:name]) 比写出 SQL 本身更可取。
  • 什么是case?如果您使用的是form_for,它应该是您正在使用的某种模型。否则你需要使用低级的form_tag 方法。
  • @ todman case 只是一个变量名。我将form_for 更改为form_tag,我得到NoM​​ethodError undefined method select for nil:NilClass。如果我将 select 更改为 select_tag 相同的错误消息。在我得到form_for 之前,我已经关注guides.rubyonrails.org/form_helpers.html 以实际工作而没有错误。
  • @tadman where 查询基于输入表单。我花了一段时间才让它真正起作用。
  • select_tag 用于那些没有内在绑定到表单的人。该方法应该在您的视图中定义。 form_for 之所以“工作”是因为您的表单是正确的,但它正在针对错误的数据进行测试。

标签: ruby-on-rails forms ruby-on-rails-4 form-for


【解决方案1】:

为您的表单尝试 simple_form 请参阅:https://github.com/plataformatec/simple_form 并阅读集合下的文档以处理 :case 的输入

还要确保您的 create 和 new 方法不为空,否则您的表单将无法保存。

希望对您有所帮助。

【讨论】:

  • 很遗憾,由于奇怪的工作设置,我无法安装新的 gems
猜你喜欢
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2015-11-02
  • 2013-12-25
  • 1970-01-01
  • 2017-09-04
  • 2019-10-03
  • 1970-01-01
相关资源
最近更新 更多