在 Rails 3 中,我使用的是 jQuery Tokenize 插件,但表单提交的是值,而不是 id
Posted
技术标签:
【中文标题】在 Rails 3 中,我使用的是 jQuery Tokenize 插件,但表单提交的是值,而不是 id【英文标题】:In Rails 3, I'm using the jQuery Tokenize plugin but the form submits the value, not the id 【发布时间】:2011-06-07 19:49:00 【问题描述】:我喜欢this 插件,我在 php 中轻松使用过这个插件,但我现在在 Rails 3 中尝试,由于某种原因,当表单被提交时,它没有提交所选项目的 id,而是提交实际值。我什至打印出 JSON 以确保数据被正确地输入到输入字段并且它显示了 ID 和 VALUE。
关于为什么会发生这种情况的任何想法。我一直在想,也许我需要为 onBlur 添加一个自定义 javascript 调用,但在此之前我从来没有这样做过。任何人有任何其他建议,甚至是完全不同的方式来在 Rails 中完成多项选择的自动完成?
感谢您能给我的任何帮助,谢谢!!是的,我知道输入没有被清理:)
def autocomplete
autolist = []
sql = "SELECT id,username from users WHERE username LIKE '" + params[:q] + "%'"
result = ActiveRecord::Base.connection.execute(sql)
result.each |field| autolist.push( "id" => field[0], "name" => field[1] )
render :json => autolist, :layout => false
end
表格代码:
<% form_for @message, :url => user_messages_path(@user), :html => :multipart => true do |f| %>
<tr>
<% if @reply_to.nil? %>
<td ><p class="labels">To:</p></td>
<td><%= f.text_field :to %>
<%= error_message_on @message, :to %></td>
<% else %>
<td >To: <%= @message.to %><%= f.hidden_field :to, :value => @message.to %></td>
<% end %>
</tr>
<tr>
<% if @reply_to.nil? %>
<td ><p class="labels">Patient:</p></td>
<td><%= f.collection_select :patient_id, Patient.find_all_by_user_id(current_user), :id, :last_name %>
<%= error_message_on @message, :patient_id %></td>
<% else %>
<td >Patient: <%= Patient.find(@message.patient_id).last_name %><%= f.hidden_field :patient_id, :value => @message.patient_id %></td>
<% end %>
</tr>
<tr>
<% if @reply_to.nil? %>
<td ><p class="labels">Subject:</p></td>
<td><%= f.text_field :subject %>
<%= error_message_on @message, :subject %></td>
<% else %>
<td >Subject: <%= @message.subject %><%= f.hidden_field :subject, :value => @message.subject %></td>
<% end %>
</tr>
<tr>
<td valign="top"><p class="labels">Message:</p></td>
<td><%= f.text_area :body %>
<%= error_message_on @message, :body %></td>
</tr>
<tr>
<td valign="top"><p class="labels">Attachment:</p></td>
<td><%= f.file_field :attachment %><%= error_message_on @message, :attachment %></td>
</tr>
<tr>
<td colspan="2"><%= submit_tag "Send" %></td>
</tr>
</table>
Javascript
<script language="javascript">
$(function($)
$("#message_to").tokenInput("/users/1/friends/autocomplete",
hintText: "Type in the name of a colleague",
noResultsText: "No results",
searchingText: "Searching..."
);
);
</script>
【问题讨论】:
我们不应该查看表单的代码吗? 当然 - pastie.org/1452530 你能发布你的相关 javascript 吗? 刚刚发布了 dmarkow - 对此感到抱歉 【参考方案1】:您的文本字段和隐藏字段需要不同的名称。
【讨论】:
隐藏字段和文本字段是什么意思?您指的是哪些字段? 您有一个f.text_field :to
和一个 f.hidden_field :to
-- 两者都使用相同的 id。但是,由于这些是在单独的 if/else 条件下,所以这应该不是问题。以上是关于在 Rails 3 中,我使用的是 jQuery Tokenize 插件,但表单提交的是值,而不是 id的主要内容,如果未能解决你的问题,请参考以下文章
如何在rails 3.1中使用jquery-addresspicker jquery
在没有咖啡脚本的 Rails 3.2 中使用 javascript