Rails在同一页面中呈现表单

时间:2014-09-06 05:58:38

标签: ruby-on-rails ruby

这是我的情景 我有一个Stories控制器,它有一个表单来创建一个新帖子:

stories.show.erb
...
<%=link_to("Create new post",new_story_post_path(@post))%>

此新帖子由帖子控制器生成

posts\new.erb
<%= form_for [@story,@post] do |f|%>

我想摆脱传统行为 - 我希望新的帖子表单显示在同一个“故事”页面中,而不是重新加载整个页面并显示在新页面中。

在rails中执行此操作的最佳方法是什么?

2 个答案:

答案 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' %>")