我对rails非常陌生,这是我第一次尝试真正的应用程序,所以请原谅我的无知:)
我想从主视图中调用自定义方法(非CRUD),并希望在函数通过后重新加载原始页面。这是方法:
def push
push_to_shopify
if Article.count == 0
flash[:info] = "All posts pushed to Shopify."
render :nothing => true
else
redirect_to :back
end
end
push_to_shopify是我在控制器助手中定义的一种方法:
def push_to_shopify
Article.each do |a|
ShopifyAPI::Article.new(
:title => a.title,
:author => a.author,
:body_html => a.body_html,
:published_at => a.published_at,
:tags => a.tags,
:summary_html => a.summary_html,
:blog_id => a.blog_id
)
Article.destroy(a.id)
end
end
这就是我试图称之为:
<%= link_to 'Push all articles to Shopify', '#', id: "push-link" %>
</div>
<script>
var callExecuter=function(){
$.ajax({
type:'POST',
url: articles_push_path
});
success:function(){
window.location = "<%= calendars_url %>";
}
}
$(document).on("click","#push-link",callExecuter);
</script>
有什么想法?谢谢!
答案 0 :(得分:0)
您有两种选择:
Rails方式:
在remote: true
上设置link_to
是最简单的方法。检查文档here。你的链接看起来像这样:
<%= link_to 'Push all articles to Shopify', '#', id: "push-link", remote: true %>
找到项目来源here,并在Rails guide
上找到类似的示例Javascript方式
如果您想坚持使用代码,只需使用
event.preventDefault()
即可阻止点击链接的正常操作!所以你会有这样的事情:
$(document).on("click","#push-link", function(e) {
e.preventDefault();
// Your AJAX code
});