0
現在、AJAXを使用して特定のユーザ名を検索するrailsウェブページに観測フィールドがあります。しかし、エスケープシーケンスを正しく取得するのに問題があります。ここ はRailsのコードです:Rails Observe Fieldエスケープシーケンシング
%= observe_field "new_member_search",
:url => {:controller => :user, :action => :search},
:frequency => 0.5,
:update => 'ProjectMemberNew',
:with => :username
%>
、ここでは、コントローラ
def search #search for user, use in 'Project Add Member'
name = params['username']
limit = params['limit'] || 21
users = unless name.blank?
User.find_by_sql(
["select id,icon,login,realname,email from users where
#{User.verified_users} and login like ? limit ?","%#{name}%" ,limit])
else
[]
end
render(:partial => 'search_hit_member',
:locals => {:users => users},
:layout => false)
終わりです
これは、次のJavaScript
それが動作しないことを非常に奇妙な<script type="text/javascript">
//<![CDATA[
jQuery('#new_member_search').delayedObserver(0.5, function(element, value) {jQuery.ajax({data:'username=' + value, success:function(request){jQuery('#ProjectMemberNew').html(request);}, type:'post', url:'/of/user/search'})})
//]]>
</script>
を生成します。私はプロトタイプからJQUERYに切り替えました。
おかげで、
'User.find_by_sql'コードは危険であり、SQLインジェクションを受けやすいです:http://wiki.rubyonrails.org/howtos/security/sql_injection – Zabba
アドバイスありがとうございます。私はテクニカルチームに通知して、作業を開始します... – TheRealVayne