2017-01-22 89 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 %> 

我怎样才能输入一个网址,并把它传递给等于该变量?

+1

实例变量只能通过从控制器=>视图,而不是相反。您需要将信息作为参数传递给表单,并使用'params'从控制器读取。它看起来像你的'link_to'没有传递来自text_field的信息。阅读rails格式的帮助。 –

+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'

相关问题