Rails:使用remote:true来停止页面刷新

我有一个projects/show.html.erb页面。 project has_many project_messages并且从projects/show.html.erb页面,用户可以成功创建新的project_message ,但是,当通过_form partial创建新的project_message时,页面将刷新。

我想使用:remote => true将project_messages添加到项目而不必刷新页面。 请参阅下面我使用的代码。 这不起作用,页面仍然刷新。 我是rails的新手,所以任何帮助都将不胜感激。

请参阅下面每个文件的代码

projects/show.html.erb中显示project_message并创建一个新的project_message,我有以下代码成功:

 

,

project_messages_controller.rb文件中,create方法如下,我添加了format.js { }

  def create @project_message = ProjectMessage.new(project_message_params) @project_message.user_id = current_user.id if current_user @project_message.project_id = current_user.team.project_id if current_user respond_to do |format| if @project_message.save format.html { redirect_to @project_message.project } format.json { render :show, status: :created, location: @project_message } format.js { } else format.html { render :new } format.json { render json: @project_message.errors, status: :unprocessable_entity } end end end 

project_message _form partial然后包括:remote => true

  true) do |form| %>  

prohibited this project_message from being saved:

'au-input au-input--full au-input--h65', placeholder: 'Type a message' %>

然后,我在views / project_messages / create.js.erb中创建了一个新的create.js.erb文件,并添加了以下代码:

 # confirm file called console.log('create.js.erb file'); # add new comment to end of comments section $("#project_message").append(""); 

使用上面的代码,页面仍然会刷新。 当我从project_message _form partial中删除local: true ,它不会刷新并创建模型,但projects/show.html.erb视图不会更新!

我在这里使用了以下链接以及stackoverflow上的其他post

respond_to do | format |
format.js {render’project_messages / create.js’}结束

看来你正在使用Rails 5

从您的代码中删除remote: truelocal: true

在这里阅读这个

并确保你有一个id = project_message的html元素

你的代码是$("#project_message").append("<%= j render(@project_message) %>");

所以检查你的HTML代码,是否有任何ID的元素

你可以使用传统的form_for http://guides.rubyonrails.org/working_with_javascript_in_rails.html#remote-lelements

更新视图中的以下代码<%= form_for project_message, :remote => true do |form| %> <%= form_for project_message, :remote => true do |form| %>

并确保你的id为

的html元素