这是我的情景 我有一个Stories控制器,它有一个表单来创建一个新帖子:
stories.show.erb
...
<%=link_to("Create new post",new_story_post_path(@post))%>
此新帖子由帖子控制器生成
posts\new.erb
<%= form_for [@story,@post] do |f|%>
我想摆脱传统行为 - 我希望新的帖子表单显示在同一个“故事”页面中,而不是重新加载整个页面并显示在新页面中。
在rails中执行此操作的最佳方法是什么?
答案 0 :(得分:1)
我认为在您的情况下,如果您在故事节目视图中添加表单并将其隐藏,然后当用户点击链接创建新帖子时,它会是最好的你可以向他们展示你的表格。
def show
@story = Story.find(params[:id])
@post = @story.posts.build # assuming stories have many posts
end
#show.html.erb
...
<%=link_to "Create a new Post", "#", id: "post-link"%>
<%= form_for [@story,@post], html: {id: "new-post"} do |f|%>
// form fields
<% end %>
#some_file.js
$(document).on("click","#post-link",function(){
$("#new-post").show();
});
#some.css.scss
#new-post{display:none;}
答案 1 :(得分:0)
<%= form_for [@story,@post], remote: true do |f|%>
在create.js.erb中你可以写
$('#post_block').html("<%= render 'your partial with posts' %>")