【问题标题】:Rails and Ajax - form_remote_tag Can't find my errorRails 和 Ajax - form_remote_tag 找不到我的错误
【发布时间】:2010-01-08 08:58:54
【问题描述】:

在我的网站上,用户可以查看他的个人资料。在他的个人资料中,他可以查看他的数据(即签名)。 现在我希望我的用户能够在观看这些数据时对其进行编辑。 所以我在我的观点中编写了以下代码:

<div id="profile-signature">
  <p>
    <b>Signature:</b>
    <%=h @user.signature %>
  </p>

  <%= form_remote_tag(:update => "signature",:url => { :action => :update_signature }) %>
  <%= text_area(:signature,:class=>"form-textarea") %>
  <%= submit_tag "Save Signature" %>

</div>

在我的用户控制器中,我创建了一个新动作 update_signature

  def update_signature
    puts 'in function!'
    @user = current_user
    puts @user.login
    puts params[:signature]
    @user.signature = params[:signature]
    @user.save
    puts 'saved'
  end

现在,提交表单,puts params[:signature] 将输出:classform-textareasfsffsfs 其中 sfsffsfs 是我输入的文本。 重新加载我的页面并在页面上输出签名(),我得到: "--- !map:HashWithIndifferentAccess classform-textarea: sfsffsfs "

为什么我得到这个奇怪的字符串而不是 sfsffsfs(在这种情况下)? 如何在不重新加载页面的情况下自动更新数据 ()?

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    使用text_area_tag 获取 text_area 字段值。重新加载页面时,div id 不匹配,它应该是 signature 而不是 profile-signature

    <div id="profile-signature">
      <p>
        <b>Signature:</b>
        <%=h @user.signature %>
      </p>
    
      <%= form_remote_tag(:update => "signature",:url => { :action => :update_signature }) %>
      <%= text_area(:signature,:class=>"form-textarea") %>
      <%= submit_tag "Save Signature" %>
    
    </div>
    

    进行以下更改

     <div id="signature">
          <p>
            <b>Signature:</b>
            <%=h @user.signature %>
          </p>
    
          <%= form_remote_tag(:update => "signature",:url => { :action => :update_signature }) %>
          <%= text_area_tag(:signature,:class=>"form-textarea") %>
          <%= submit_tag "Save Signature" %>
    
        </div>
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      看来您的 text_area 调用不太正确,查看docs 应该是这样的:

      text_area(object_name, method, options = {})
      

      所以你的css类被设置为方法,你应该使用text_area_tag:

      <%= text_area_tag(:signature, @user.signature, :class=>"form-textarea") %>
      

      那么正确的值(文本区域中的文本)应该作为您期望的参数提交。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多