2017-01-22 4 views
0

ビューからURLを入力し、それをコントローラに渡して変数に設定しようとしています。私はこれを今のようにしようとしていますが、それはゼロを返すだけです。Railsビューからコントローラ変数を手動で設定する方法

これは、コントローラ/ポストです:

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

インスタンス変数のみが渡されますコントローラ=>ビューから、その逆ではありません。あなたはフォームの中のパラメータとして情報を渡し、 'params 'でコントローラからそれを読む必要があります。あなたの 'link_to'がtext_fieldから情報を渡していないようです。いくつかの助けのためにレールフォームを読んでください。 –

+0

Nokogiriを使用して独自のHTMLを解析していますか? –

答えて

0

ビューからコントローラに直接変数を設定することはできませんが、ビューから要求を送信することはできます。

のように:あなたのコントローラに実行されたアクションへのアクセスで次に

<%= form_tag('/run') do %> 
    <%= text_field_tag 'my_url' %> 
    <%= submit_tag %> 
<% end %> 

パラメータ:p params[:my_url]

は、ルート内に実行されたアクションのためのPOSTメソッドを使用可能にすることを忘れないでください:post 'run', to: 'your_controller#run'

関連する問題