在我的网站上,用户可以观看他的个人资料。在他的个人资料中,他可以查看他的数据(即签名)。 现在我希望我的用户能够在观看时编辑这些数据。 所以我在我看来编写了以下内容:
<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
现在,提交表单,put params [:signature]将输出:classform-textareasfsffsfs 其中sfsffsfs是我输入的文本。 重新加载和我的页面并在页面上输出签名(&lt;%= h @ user.signature%&gt;),我得到: “---!map:HashWithIndifferentAccess classform-textarea:sfsffsfs”
为什么我得到这个奇怪的字符串而不仅仅是sfsffsfs(在这种情况下)? 怎么做,在没有页面重新加载的情况下自动更新数据(&lt;%= h @ user.signature%&gt;)?
答案 0 :(得分:2)
使用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>
希望这有帮助!
答案 1 :(得分:1)
看起来你的text_area调用不太正确,看docs它应该是这样的:
text_area(object_name, method, options = {})
所以你的css类被设置为方法,而你应该使用text_area_tag
:
<%= text_area_tag(:signature, @user.signature, :class=>"form-textarea") %>
然后应将正确的值(文本区域中的文本)作为您期望的参数提交。