编辑帖子而不离开页面

时间:2013-09-05 02:48:23

标签: ruby-on-rails ajax

我正在尝试在不离开物理页面的情况下编辑页面上的微博。

在我的应用程序中,我有一个页面,使用下面的部分呈现所有用户的微博:

微柱/ _micropost:

<%= render 'shared/edit_micropost', object: micropost %>
<%= micropost.title %>
<%= micropost.content %>
<%= micropost.url %>
<%= raw "Tags: #{micropost.tag_list.map {|t| link_to t.capitalize, tag_path(t)}}" %>

共享/ edit_micropost:

<%= link_to "edit", object, remote: true %>
<%= form_for object do |object| %>
    <%= object.text_field :title %>
    <%= object.text_area :content %>
    <%= object.text_field :url %>
    <%= object.text_field :tag_list %>
    <%= object.submit "Update", class: "btn btn-mini" %>
<% end %>

当我点击“编辑”时,我希望表单出现,以便特定微博的标题,内容,网址和标记列表可以编辑。

现在,当我点击“编辑”时,我得到无路由匹配[GET]“/ microposts / 452”我不知道如何在link_to中指定工作路径。我假设我必须将form_for移动到JS文件?

我是编程新手,非常感谢你的帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

有一颗宝石可能你想尝试一下,'Best in Place'是基于jQuery的AJAX Inplace-Editor

Ryan Bates还有一个screencast

答案 1 :(得分:0)

执行此操作的简单方法是继续在页面上呈现表单,但使用javascript隐藏它。然后,当用户单击该按钮时,再次显示该按钮。这样,表单也可供没有启用js的用户使用。

然后,只需在表单中设置remote: true选项以使其通过ajax提交并使用ajax回调来通知用户成功或失败(如果需要)。同样,这种方法仍然允许非js用户使用正常请求提交表单,而启用了js的用户将获得灵活的ajax功能。