2016-07-14 2 views
1

나는 Assignment/show.html.erb에서 link_to를 사용하여 입찰을 만들려고했습니다. 강력한 매개 변수 params.require with link_to

show.html.erb 다음 bids_controller.rb에서

<%= link_to "Create Bid", bids_path(:status => "Pending", :assignment_id => @assignment.id, :user_id => current_user.id), :method => :post %> 

는이 코드 줄은 작동하지 않았다

params.require(:bid).permit(:status, :assignment_id, :user_id) 

나는 그것을 얻기 위해 다음으로 변경했다 작동하려면 :

params.permit(:status, :assignment_id, :user_id) 

나는 정말로 문제를 이해하지 못한다. 그러나 나는 params.require 부분을 포함하지 않았다면 코드는 향후 공격이나 문제로부터 보호되지 않습니다.

어쨌든 코드의 params.require 부분을 포함하고 싶습니다. 누군가가 나를 어떻게 안내 할 수 있기를 바랍니다. 감사!

+0

아래의 예를 시도해 볼 수도 있습니다 허락을 받아야한다. – MageeWorld

+0

그래, 이해해. 하지만 그것을 할 수있는 적절한 구문을 알고 싶습니다 :) – Benjamin

답변

2

params.require (: 입찰가) .permit (: 상태 : assignment_id : USER_ID는)에서 전달 PARAMS가 준수하는 LINK_TO 태그를 구성하기 위해 다음과 같은 구조 때문에

bid: { 
    status: '', 
    assignment_id: 1, 
    user_id: 1 
} 

있을 것이다 수단 의 할당은 ID와 사용자 ID가 필요하지 않을 수도 링크를 통해 전달되는 경우 - 당신이 강력한 매개 변수 의도의 구조는, 당신은 당신이 당신의 relatoions을 포함하여 코드의 전체를 보여 주어야

<%= link_to "Create Bid", bids_path(bid: {status: "Pending", assignment_id: @assignment.id, user_id:current_user.id}), :method => :post %> 
+0

당신이 물어 봤는데 그것이 효과가! 그러나이 코드 줄은 현재 작동하지 않습니다. 'Bid.exists? (user_id : params [: user_id], assignment_id : params [: assignment_id]) ' – Benjamin

+0

제안 된 코드의 의미는 무엇입니까? 그것은 bid라는 객체를 정의하는 것과 같은가요? @KennyChan – Benjamin

+0

코드를 '으로 변경하여 문제를 해결 한 것 같습니다. Bid.exists? (user_id : params [: bid] [: user_id], assignment_id : params [: bid] [: assignment_id]) ' – Benjamin