如何从Rails视图手动设置控制器变量
问题描述:
我试图从视图中输入一个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 %>
我怎样才能输入一个网址,并把它传递给等于该变量?
答
您不能直接将视图中的变量设置为控制器,但可以从视图中发布请求。
像:
<%= form_tag('/run') do %>
<%= text_field_tag 'my_url' %>
<%= submit_tag %>
<% end %>
在你的控制器运行操作访问
然后参数:p params[:my_url]
记得启用的路线运行动作POST方法:post 'run', to: 'your_controller#run'
实例变量只能通过从控制器=>视图,而不是相反。您需要将信息作为参数传递给表单,并使用'params'从控制器读取。它看起来像你的'link_to'没有传递来自text_field的信息。阅读rails格式的帮助。 –
你使用Nokogiri来解析你自己的HTML吗? –