如何从ruby中的输入字段中提取信息

时间:2014-01-17 22:07:36

标签: ruby-on-rails ruby

我是一个前端+ PHP开发人员,试图修复在Rails中构建的项目中的[]。

[] =获取颜色,显示稍暗的颜色。

这一行:

<%= f.text_field attribute %>

创建一个输入字段,其值可以转换为颜色。我不知道在哪里寻找它如何增加这个价值。我正在尝试使用此输入字段生成的值。

这是来自app / views / shared文件夹中的文件select_a_color_input.html.erb的代码。关于在哪里继续寻宝的任何想法? :)

更新:我发现了这个!

def app_text_field(attribute, args = {})
    render_field 'text_field', field_locals(attribute, args)
end

这有帮助吗? ^ __ ^

更新: 表单构建器

class AppFormBuilder < ActionView::Helpers::FormBuilder
  def form_fields(partial = nil , options = {})
    partial ||= 'form'
    fields = ''
    unless options.delete(:without_error_messages)
      fields << @template.render('shared/error_messages', :target => Array(@object).last)
    end
    fields << @template.render(partial, options.merge(:f => self))
  end


  def app_text_field(attribute, args = {})
    render_field 'text_field', field_locals(attribute, args)
  end

  def app_file_field(attribute, args = {})
    render_field 'file_field', field_locals(attribute, args)
  end

  private

  def render_field(name, locals)
    @template.render field_path(name), locals
  end

  def field_locals(attribute, args = {})
    help_options = args[:help_options] || {}
    field_options = args[:field_options] || {}
    html_options = args[:html_options] || {}
    { :f => self, :attribute => attribute, :help_options => help_options, :field_options => field_options, :html_options => html_options, :object => object }
  end

  def field_path(value)
    "shared/app_form/#{value}"
  end
end

更新: 当我试图添加

<%= content_tag(:p, attribute) %>

它不会给我值,而是给出项目的ID /名称,而不是颜色。

1 个答案:

答案 0 :(得分:1)

<%= f.text_field attribute %>

这本身对帮助我们收集上下文不是很有用。周围的标记是什么样的?在这种情况下,attribute是一个ruby变量。如果是f.text_field :attribute,则:attribute现在是符号而不是变量,这表示它映射到X模型上的attribute方法。这完全取决于您form_for的样子。我举个例子:

<%= form_for @user do |f| %>
  <%= f.text_field :attribute %>

在这种情况下,我们有一个User模型的表单,我们的text_field映射到@user.attribute。该字段本身看起来像这样:

<input type='text' name='user[attribute]'>

在控制器的#update#create操作中(取决于这是您正在编辑的新记录还是现有记录),可以通过以下方式访问该值:

params[:user][:attribute]

然而,在你的特定情况下,无法确定params的确切含义。正在采取什么行动?这个文件的名称是什么? “app / views / users / new”表示#new操作处理此页面,#create操作将处理表单提交。

我们需要知道的事情才能完全解决您的问题:

  • 处理此操作的控制器的名称和相关代码。

  • 呈现的完整视图路径
  • 标记的其余部分从form_for开始并以此字段属性结尾

  • attribute有什么价值?它是一个变量,因此它必须保持一个符号值或一些指示哪个字段被映射到此输入的东西。