나는 노동자들이 작업에 대한 입찰을 제출할 수 있습니다 작업 보드와 레일 3 응용 프로그램을 구축하고 3 저장.레일 여러 협회
Job:
has_many :bids
has_many :workers, :through => :bid
Bid:
belongs_to :job
belongs_to :worker
Worker:
has_many :bids
has_many :jobs, :through => :bid
나는 노동자들이 입찰을 제출할 수있는 표시 작업 페이지의 양식을 가지고 : 나는 다음과 같은 연결을 가지고있다. 는 작업 ID 없기 때문에 위의 코드는, 제출 된 입찰이 제대로 저장하지 않습니다와
Job Controller:
def show
@bid = current_worker.bids.build
end
Bid Controller:
def create
@bid = current_worker.bids.build(params[:bid])
@bid.save
end
:
1) 입찰을 저장하는 올바른 방법은 무엇입니까 컨트롤러, 나는 다음을 둘 다 job_id와 worker_id로?
2) (필자는 입찰 컨트롤러 작업 컨트롤러 표시 방법에서 방법)을 작업 ID를 만들 통과 문제 데 -이 변수 응답 세션에서 작업 ID를 전달하는 고정된다? 같은
이 참고로, 입찰 형태로 보이는 : 코드는 당신이 원하는 안전에 의존
<%= form_for(@bid) do |f| %>
<%= f.label :min_price, "Minimum Price" %>
<%= f.text_field :min_price %>
<%= f.label :fee %>
<%= f.text_field :fee %>
<%= f.label :comments %>
<%= f.text_area :comments, placeholder: "Comments..." %>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
'bids_controller # create' 메소드가'build' 대신'new'를 호출하면 안됩니까? 왜'<% = f.hidden_field : job_id, @ job.id %>'를'form_for (@bid)'에 추가하지 않으시겠습니까? – coreyward
job_id를 숨겨진 필드로 전달하는 것이 안전하지 않거나 안전하지 않습니다. 사용자는 폼을 제출할 때 방화 녀 (firebug) 또는 다른 프로그램을 사용하여 job_id를 변경할 수 있습니다. – Krishna
그리고 그들이 어떤 직업에 입찰 할 수 있다면 그것은 중요하지 않습니다. 작업 ID에 제한이있는 경우 어쨌든 서버 측에서 유효성을 검사해야합니다. – coreyward