Javascript 如何使用jQuery从application.js文件调用控制器操作?
我正在使用jQuery自动完成插件,我想自定义此事件:Javascript 如何使用jQuery从application.js文件调用控制器操作?,javascript,jquery,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby,Ruby On Rails 3,我正在使用jQuery自动完成插件,我想自定义此事件: select: function(event, ui) { $('.topic_field').val(ui.item.topic.name); return false; 本质上,当从下拉列表中选择一个元素时,它会触发回调。到目前为止,它只将所选元素添加到文本字段中。我希望填充字段,并让我的应用程序向视频更新控制器操作发送POST请求,这样用户就不需要显式按下按钮。我该怎么做 更新: 以下是视
select: function(event, ui) {
$('.topic_field').val(ui.item.topic.name);
return false;
本质上,当从下拉列表中选择一个元素时,它会触发回调。到目前为止,它只将所选元素添加到文本字段中。我希望填充字段,并让我的应用程序向视频更新控制器操作发送POST请求,这样用户就不需要显式按下按钮。我该怎么做
更新:
以下是视频控制器显示视图中的表单:
<%= form_for @video, :url => {:action => "update"}, :remote => true do |f| %>
<div class="field">
<%= f.text_field :topic_names, :class => "topic_field" %>
</div>
<%= f.submit "Add Topic" %>
<% end %>
这在my routes.rb中:
resources :videos
resources :video_votes
resources :users
resources :profiles
resources :genres
resources :topics
resources :topicables
resource :session
以下是我的更新操作:
def update
@video = current_user.videos.find(params[:id])
respond_to do |format|
if @video.update_attributes(params[:video])
format.html { redirect_to(@video) }
format.js
else
format.html { render :action => "edit" }
end
end
end
使用jqueryajax函数从动作url/topics/list等获取数据
$.post('video/update',
data: {yourdata},
function(data) {
//callback function
}
);
在视频更新中,请确保为js请求返回一些内容:
def update
blah
respond_to do |format|
format.js { return somethinghere }
end
end
查看有关如何将选择框中的数据发布到相关控制器操作的文档
我不熟悉autocomplete插件,但我认为它遵循选择框上的onChange事件。用户做出选择后,应执行以下未经测试的操作:
var url = $('myForm').attr('action');
var val = $('mySelectBox').val();
$.post(url, {data:val})
在控制器中,您可以使用以下方式访问此文件:
params[:data]
这将返回选择框的值。然后,您可以在控制器代码中正常使用该函数。我通常在使用该函数时遇到问题。你能举个例子吗?当帖子出现时,你希望发生什么?是否只想更新数据库;重定向用户等。我想更新数据库,是的。我希望执行与单击表单按钮完全相同的操作。编辑我的答案。如果你能试试,我可以帮你,只要你能发布更多的试用/代码嘿,我已经用更多的代码更新了问题的详细信息。我只需要传递type选项和url选项作为与更新操作相对应的url吗?不需要传递type选项,因为它默认为POST,并且url选项在第一个参数中拾取字符串时不显式需要。在restful控制器中,更新url的格式为/resource_name/:id,即/posts/1ah ok,谢谢,-如何获取该资源的特定id?我是否只传递:id?如果选择框已经在表单中,您可以使用jQuery从表单中获取url。如果它不在表单中,我会在视图中插入id,可能是在select框中,并使用jQuery获取它。
params[:data]