我正在尝试在不离开物理页面的情况下编辑页面上的微博。
在我的应用程序中,我有一个页面,使用下面的部分呈现所有用户的微博:
微柱/ _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文件?
我是编程新手,非常感谢你的帮助,谢谢。
答案 0 :(得分:1)
有一颗宝石可能你想尝试一下,'Best in Place'是基于jQuery的AJAX Inplace-Editor
Ryan Bates还有一个screencast
答案 1 :(得分:0)
执行此操作的简单方法是继续在页面上呈现表单,但使用javascript隐藏它。然后,当用户单击该按钮时,再次显示该按钮。这样,表单也可供没有启用js的用户使用。
然后,只需在表单中设置remote: true
选项以使其通过ajax提交并使用ajax回调来通知用户成功或失败(如果需要)。同样,这种方法仍然允许非js用户使用正常请求提交表单,而启用了js的用户将获得灵活的ajax功能。