2017-01-22 7 views
0

뷰에서 URL을 입력하고이를 내 컨트롤러로 전달하고 변수를 동일하게 설정하려고합니다. 나는 이것을 현재처럼 노력하고 있지만 그것은 단지 nil을 계속 반환한다.레일 뷰에서 컨트롤러 변수를 수동으로 설정하는 방법

이 컨트롤러/게시물입니다 :

def run 
    url = params[:url_toget] 
    puts url 
    doc = Nokogiri::HTML(open(url)) 
    post = Post.create do |post| 
    post.body = doc.at_css("body") 
    post.url_toget = url 
    end 
end 

이 조회수 게시물입니다 :

<div class="form-group"> 
<%=text_field :url_toget, class:"form-control", placeholder:"Recipe URL" %> 
</div> 

<%= link_to "Rake", posts_run_path %> 

어떻게 입력 할 URL이 그 변수를 동일하게 통과 한 수?

+1

인스턴스 변수 만 전달됩니다 p params[:my_url]

하는 경로에서 실행 조치에 대한 POST 메소드를 사용하는 것을 잊지 마십시오 컨트롤러 =>보기에서, 그 반대는 아닙니다. 정보를 양식의 매개 변수로 전달하고'params '를 사용하여 제어기에서 읽어야합니다. 'link_to'가 text_field에서 정보를 전달하지 않는 것 같습니다. 도움이 필요하면 레일 양식을 읽어보십시오. –

+0

Nokogiri를 사용하여 자신의 HTML을 구문 분석합니까? –

답변

0

보기에서 컨트롤러로 직접 변수를 설정할 수는 없지만보기에서 요청을 게시 할 수는 있습니다.

처럼 :

매개 변수 컨트롤러 실행 액션 액세스에서 다음
<%= form_tag('/run') do %> 
    <%= text_field_tag 'my_url' %> 
    <%= submit_tag %> 
<% end %> 

: post 'run', to: 'your_controller#run'