2013-02-13 28 views
0

我有一個Rails應用程序,其中有Article和Like模型。我希望有人能夠創建Like記錄,類似於Facebook,數據庫將記錄新記錄而不重定向它們。我的兩個要求是:創建一個新的Like記錄,而不用重定向用戶,並有一個確認創建記錄的flash或js消息。在沒有HTML重定向的情況下創建新的Rails記錄

我試着把這個放在我看來。然而,當我這樣做,它會創建兩個相同的記錄:

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

我也試過這個這就造成了一個創紀錄的創造,但我花了到localhost:3000 /喜歡:

<%= 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 

滿足我的兩個要求的最佳方法是什麼?謝謝!

回答

0

我認爲文章和喜歡有關。當你想「喜歡」一篇文章時,你實際上正在更新那篇文章,對吧?換句話說,您將不得不在文章控制器的更新操作中更改重定向。

P.S.我會用一些javascript提交表單,例如:

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

此示例從上check_box當點擊一個特定的形式(父)提交的輸入。當然,你必須調整它以適應你的需求。

相關問題