我对Rails很陌生,我对使用Ajax有疑问。我在页面上有未完成的任务和已完成的任务,因此,当用户单击“完成”按钮时,将重新加载页面,然后将选中的任务移至已完成的任务。但是,我希望执行此操作而无需重新加载页面。这对你们来说可能很容易,但是请考虑我是Rails和JS的新手。感谢您的帮助。
查看
c = b.sort { |(a,i),(b,j)| a[0]==b[0] ? i<=>j : a<=>b }
#=> [["I", 0], ["love", 2], ["llamas", 3], ["really", 1]]
c.map(&:first)
#=> ["I", "love", "llamas", "really"]
答案 0 :(得分:0)
可能的做法是将urls=set()
for link in aList:
urls.update(re.findall(r'href=[\'"]?([^\'" >]+)', link))
for url in urls:
print(url)
添加到form_tag中,这不会重新加载页面。
remote: true
与此同时,您必须在控制器中添加一个新动作
<%= form_tag complete_user_tasks_path, remote: true %>
<% end %>
在您看来,创建一个complete_user_tasks.js.erb,它将从控制器读取值并重新加载数据。
def complete
user_id = params[:user_id]
@user = User.find(user_id)
@update_task = Task.where(id: params[:task_id]).update(complete: true)
respond_to do |format|
format.js
end
end
或者如果您不使用局部的,则可以执行以下操作
$('#id_or_.class').html("<%= escape_javascript(render partial: 'section_which_needs_to_reload_data_is_stored_in_this_file', :locals => {update_task => @update_task, user => @user}) %>");