0

我有一个 Rails 应用程序,其中有 Article 和 Like 模型。我希望有人能够创建类似于 Facebook 的 Like 记录,其中数据库记录新记录而不重定向它们。我的两个要求是:在不重定向用户的情况下创建一个新的 Like 记录,并有一条 flash 或 js 消息确认该记录已创建。

我试着把它放在我的视野中。但是,当我这样做时,它会创建两个相同的记录:

<%= form_for @like, :remote=> true do |f| %>
  <%= f.hidden_field(:article_id, :value => article.id) %>      
  <%= f.submit "Like" %>
<% end %>

我也试过这个,结果创建了一条记录,但它把我带到了 localhost:3000/likes:

<%= form_for @like do |f| %>
  <%= f.hidden_field(:article_id, :value => article.id) %>      
  <%= f.submit "Like" %>
<% end %>

然后在 Like Controller 中注释掉 format.html 和 json:

  def create
    @like = Like.new(params[:like])

    respond_to do |format|
      if @like.save
        #  format.html { redirect_to @like, notice: 'Like was successfully created.' }
        #  format.json { render json: @like, status: :created, location: @like}
      else
        format.html { render action: "new" }
        format.json { render json: @like.errors, status: :unprocessable_entity }
      end
    end
   end

满足我的两个要求的最佳方法是什么?谢谢!

4

1 回答 1

0

我假设文章和喜欢是相关的。当您想“喜欢”一篇文章时,您实际上是在更新该文章,对吗?换句话说,您必须在文章控制器的更新操作中更改重定向。

PS我会使用一些javascript来提交表单,例如:

<script type="text/javascript">
  $(document).ready(function() {
    $('.edit_[here_comes_the_name] input[type=checkbox]').click(function() {
      $(this).parent('form').submit();
    });
  });
</script>

此示例在单击复选框时提交来自特定表单(父级)的输入。当然,您必须对其进行调整以适应您的需求。

于 2013-02-13T09:24:15.153 回答