【问题标题】:Rails forms -- accessing a variable that is not part of the formRails 表单——访问不属于表单的变量
【发布时间】:2011-06-30 04:29:26
【问题描述】:

我想制作一个表单来提交创建模型 X 实例所需的信息并将其保存到数据库中,但我有一个小问题:我知道如何添加文本区域等表单字段,然后如何在调用 create 方法时使这些值可访问,但是如果我还想发送一个不属于可访问表单的值怎么办?例如,如果我希望能够访问我的 html 文档的 <div> 中的某些文本并将其发送到模型 X 的 create 方法(因此它可以像内容变量或其他东西一样存储)怎么办?我该怎么做?

【问题讨论】:

  • 你能展示将文本添加到文本框内容属性的代码吗?

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


【解决方案1】:

简短的回答是您不能 - 要将数据发送到服务器,它必须在表单字段中。

更长的答案 - 有很多方法可以解决这个问题,您有多种选择 - 将文本放在 textarea 中并将其设置为看起来像 div 的样式,或者在创建模板时将其放在隐藏字段中,或者使用 javascript 复制它进入一个隐藏的领域......一切都取决于你真正想要做的事情。或许你可以提供一些更详细的信息?

【讨论】:

  • 是的——基本上当用户突出显示文本时,我从文档中复制该文本并转储到我页面上的 div 中(该部分有效)。然后,当用户单击页面上的“创建”按钮时,我想创建一个新的摘录模型,并且我希望模型将其“内容”属性设置为我转储到 div 中的文本。
  • 那么在将内容复制到div的时候,是不是也可以将内容复制到表单中的一个隐藏字段中,然后在表单提交到服务器的时候再去取呢?
  • 我想这是可能的,但我不知道该怎么做。
  • 那么您如何将用户突出显示的文本复制到 div 中?您只是在使用 javascript、jquery 还是其他东西?
  • 这里说:guides.rubyonrails.org/form_helpers.html“隐藏的输入不会显示给用户,但它们像任何文本输入一样保存数据。可以使用 JavaScript 更改其中的值。”我需要知道如何做到这一点。
【解决方案2】:

在你的模型中你想使用attr_accessor

你可以做的是使用attr_accessor,它创建一个你可以在模型中使用但之后被丢弃的虚拟属性。

例如:

app/models.post.rb

class Post < ActiveRecord::Base

  attr_accessor :some_variable 

  #now you can access 'some_variable' this variable in the model
  #try Post.some_variable in the console

end

app/views/posts/_form.html.erb

<div id="form"> 

      <div class="field">
        <%= f.label :some_variable  %> 
        <%= f.text_field :some_variable  %>
      </div>
      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>
</div>

【讨论】:

  • 对不起——我真的很感谢详细的回复,但我无法理解所有这些——你能试着让答案更具体地针对我的问题吗(我写了一个更详细的描述'正在尝试在对上一个答案的评论中做)
  • 好的。让我知道这是否有意义。我只是想举一个真实的例子来说明我是如何做你想做的事情的。除非您使用 javascript,否则您无法从 div 获取变量,但这不是您应该做的。如果你真的觉得你需要这样做,你需要解释为什么是 div 而不是表单输入值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2017-03-06
  • 2016-05-21
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
相关资源
最近更新 更多