레일스에 대한 최소한의 이해와 모델 전체에서 변수를 사용하는 방법 때문에 오류가 발생할 가능성이 있습니다. 따라서 더 많은 코드가 필요하거나 내 용어가 정확하지 않은 경우 저도 알고 있고 기꺼이 질문을 업데이트 할 것입니다.인스턴스 변수를 양식에 전달하기 - 레일
나는 사용자가 "좋아할"수있는 게시물을 제공합니다. 다음 코드는 개별 게시물의 페이지 (예 : site.com:3000/posts/*post.id*
)에서 양식 데이터가 like[liked_post_id]:*post.id*
이고, 프로필 (예 : site.com:3000/users/*user.id*
)과 같은 양식을 제출하려고 시도 할 때 좋아요. 양식 데이터는 전달됩니다. like[liked_post_id]:
(공백 값)
게시물의 피드에서 liked_post_id
변수에 _like.html.erb
의 게시물 ID를 전달하려면 어떻게해야합니까?
같은 양식의 동작이 전체적으로 /likes
인 것을 확인했습니다. 이것은 페이지에있을 때만 작동합니까 site.com:3000/posts/*post.id*
? 적절한 형태로
#views/posts/_post.html.erb:
...
<%= render 'posts/like_form' if signed_in? %>
...
경로 : 나는 형태의 작업이 /posts/*post.id*/likes
을 수 있도록 당신이 내 게시물보기에서 페이지 site.com:3000/users/*user.id*
에있을 때 그것을 수정해야하는지 궁금 해요
#views/posts/_like_form.html.erb:
<div id="like_form">
<% if current_user.likes_this?(@post) %>
<%= render "posts/unlike" %>
<% else %>
<%= render "posts/like" %>
<% end %>
</div>
등에서 :
의#views/posts/_like.html.erb
<%= form_for Like.new, :remote => true do |f| %>
<%= f.hidden_field :liked_post_id, :value => @post.id %>
<%= f.submit "Like" %>
<% end %>
프로파일에서 (피드 게시물) :
#views/users/show.html.erb
...
<%= render @posts %>
...
컨트롤러 추천했습니다 :
#controllers/likes_controller.rb
class LikesController < ApplicationController
before_filter :signed_in_user
def create
@post = Post.find(params[:like][:liked_post_id])
current_user.like!(@post)
respond_to do |format|
format.html { redirect_to root_url }
format.js
end
end
...
사용자 모델 :
#models/user.rb
...
def like!(post)
likes.create!(liked_post_id: post.id)
end
...
솔직한-눈보라 @ 내 폼 마크 업이 문제가 있다고 지적했다. 게시물의 페이지에서 생성 된 태그는 다음과 같습니다
<input id="like_liked_post_id" name="like[liked_post_id]" type="hidden" value="73" />
공급 페이지에있는 동안 :
<input id="like_liked_post_id" name="like[liked_post_id]" type="hidden" />
_likes_의 생성은 컨트롤러에서 수행해야합니다. –
@ Code-Source, 위의 "Edit 1 :"참조, 같은 컨트롤러에 _like_가 생성됩니다. –