【问题标题】:Stop Current Password can't be blank issue停止当前密码不能为空问题
【发布时间】:2014-06-11 20:08:11
【问题描述】:

我正在使用 Rails 4。我正在尝试向我的控制器发送一个隐藏字段,如果隐藏字段设置为 true,那么我想删除一个属性。现在,我的表单看起来像:

<input name="store[_destroy]" type="hidden" value="false" />
<input type='text' name="store[name]">

如果单击按钮,我有一些 jQuery 将隐藏字段设置为 true。所以基本上,如果有人点击“删除商店名称”按钮,我想发送值为 true 的隐藏字段,并从插入数据库中删除 store[name]。

我的控制器现在看起来像:

def create
   @store = Store.new(store_params)

   if params[:_destroy] == true
      params.delete :name
   end

   respond_to do |format|
      if @store.save
      ...

但是我得到了一个unknown attribute: _destroy 与我当前的代码。

【问题讨论】:

  • 这个params[:store][:_destroy]的目的是能够销毁记录,而不是清空记录的另一个属性。在提交表单之前,使用 jQuery 清空/禁用名称的文本输入。
  • @MrYoshiji,啊,我明白了,这更有意义!

标签: jquery ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

点击“删除商店名称”按钮时,我会使用 jQuery 来禁用输入:

f.input :name, id: :store_name

link_to 'Remove Store Name', '#', onclick: "$('form input#store_name').prop('disabled', !$('form input#store_name').prop('disabled'));return false;"

更长的版本:

f.input :name, id: :store_name

link_to 'Remove Store Name', '#', onclick: 'handle_remove_store_name(); return false;'

# javascript
window.handle_remove_store_name = function() {
  var current_disabled_state = $('form input#store_name').prop('disabled');
  $('form input#store_name').prop('disabled', !current_disable_state);
}

禁用的输入不会包含在通过表单提交的参数中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    相关资源
    最近更新 更多