我刚开始学习Rails,我正在尝试构建一个帖子/类似的功能。我已经开始工作,但必须有一种更有效的方法。
我的帖子索引视图包含以下代码(我使用jQuery通过ajax提交表单):
<% @posts.each do |post| %>
<%= form_for([post, post.likes.build]) do |f| %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :post_id, :value => post.id %>
<%= f.submit pluralize(post.likes.count, 'Like'), :class => 'like like-' + post.id.to_s %>
<% end %>
<% end %>
我的节目视图包含以下内容:
<%= render "likes/form" %>
其中包含以下内容:
<%= form_for([@post, @post.likes.build]) do |f| %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :post_id, :value => @post.id %>
<%= f.submit pluralize(@post.likes.count, 'Like'), :class => 'like like-' + @post.id.to_s %>
<% end %>
这一切都与jQuery结合并销毁链接。然而,有两种不同的形式似乎有点重任。关于如何改变/优化的最佳方法或最佳方法?
感谢。
答案 0 :(得分:2)
编辑form.html.erb您的表单部分
<%= form_for([post, post.likes.build]) do |f| %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :post_id, :value => post.id %>
<%= f.submit pluralize(post.likes.count, 'Like'), :class => 'like like-' + post.id.to_s %>
<% end %>
<%= render "likes/form", :locals => {:post => @post} %>
<% @posts.each do |post| %>
<%= render "likes/form", :locals => {:post => post} %>
答案 1 :(得分:1)
隐藏字段适用于noobs man,把那个烂摊子放在控制器中: - )
在Post控制器中执行类似
的操作
def show
@post = Post.find(params[:id])
@like = @post.likes.build
end
def create
@like = @post.likes.build(params[:id])
@like.user_id = current_user.id
# ... the rest of the stuff here
#assuming you have scaffolded it will be here. you can find that
end
现在在您的视图中,您可以执行以下操作:
< % = form_for([post, @like]) do |f| %>
< % = render_partial 'likes', :locals => {:f => f} %>
< % end %>
在新的_likes.html.erb
中:
< % = f.submit pluralize(post.likes.count, 'Like') , :c lass = > 'like like-' + post.id.to_s %>
当然有些可能无法正常工作,但这是我能收集到的要点。