我有一个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 /赞:
<%= 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 :(得分: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时提交来自特定表单(父级)的输入。当然,您必须根据自己的需要进行调整。