我正在使用jQuery自动完成插件,我想自定义此事件:
select: function(event, ui) {
$('.topic_field').val(ui.item.topic.name);
return false;
实际上,当选择下拉列表中的元素时,它会触发回调。截至目前,它只将选定的元素添加到文本字段中。我希望填充字段和我的应用程序向视频更新控制器操作发送POST请求,以便用户不需要明确按下按钮。我怎么能这样做?
更新:
以下是视频控制器的show视图中的表单:
<%= 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 %>
这是我的jQuery代码:
var url = $('.edit_video').attr('action');
var val = ui.item.topic.name;
$.post(url, {data:val});
这是在我的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
答案 0 :(得分:0)
使用jquery ajax函数从您的操作URL(“/ topics / list”)或其他东西中获取数据
$.post('video/update',
data: {yourdata},
function(data) {
//callback function
}
);
在您的视频#upd中,请确保为您的js请求返回一些内容:
def update
blah
respond_to do |format|
format.js { return somethinghere }
end
end
答案 1 :(得分:0)
查看jQuery.post文档,了解如何将数据从选择框发布到相关的控制器操作。
我不熟悉自动完成插件,但我认为它遵循选择框上的onChange事件。当用户做出选择时,您应该执行以下(未经测试):
var url = $('myForm').attr('action');
var val = $('mySelectBox').val();
$.post(url, {data:val})
在您的控制器中,您可以使用以下方式访问它:
params[:data]
将返回您的选择框的值。然后,您可以在控制器代码中正常使用它。