我是Ruby on Rails的新手,我想将变量从index.html.erb
传递给search.html.erb
文件,并在ruby代码中使用该变量。
换句话说,我在index.html.erb
中有文字和提交按钮。如果我输入文本并按下按钮,它会将文本中的内容传递给search.html.erb
并在ruby代码中使用该文本
index.html.erb
<h1>Twitter</h1>
<html>
<form>
<input type = 'search' name = 'search' /></br>
<a href=/home/search><button type="button">Search</button></a>
</form>
</html>
search.html.erb
<h1>Twitter</h1>
<html>
<%=
require 'twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key = "xxxxxxxxxxxxxxxxxx"
config.consumer_secret = "xxxxxxxxxxxxxxxxxx"
config.access_token = "xxxxxxxxxxxxxxxxxx"
config.access_token_secret = "xxxxxxxxxxxxxxxxxx"
end %>
<ul>
<%=client.search("**I want variable here**", result_type: "recent").take(5).collect do |tweet| %>
<li><%= "#{tweet.user.screen_name}: #{tweet.text}" %> </li>
<% end %>
</ul>
</html>
谢谢
答案 0 :(得分:1)
您可以使用表单传递数据。
<%form_for 'url_for_search_page_here' do %>
<%=text_field_tag :search%>
<%=submit_tag, "Search"%>
<%end%>
使用表单标记,您的params[:serach]
在搜索操作中有值,或者您提交表单的位置。
答案 1 :(得分:1)
您必须在表单中提及使用用户输入的参数执行该操作的操作参数。在该操作中,您可以获取参数并在html页面中使用。
首先,我建议使用ruby form helper方法而不是普通的html,因为你可以轻松地构建你的表单(你可以使用像&#34; simple_form&#34这样的ruby gems;)
<%= form_for "<search_url_here>" do |f| %>
<%= f.label :search %>
<%= f.text_field :search %>
<%= f.submit %>
<% end %>
在您的搜索方法中
def search
@search_term = params[:search]
end
在search.html.erb页面中,您可以访问@search_term
答案 2 :(得分:1)
首先,您需要正确构建ERB,
<% form_tag("/home/search", method: "get") do %>
<%=text_field_tag(:search)%>
<%=submit_tag("Search")%>
<%end%>
您可以在呈现search.html.erb的控制器中发送局部变量,如下所示
get '/hello/search' do
search_text = params[:search]
render :search, :locals => {:your_variable => search_text}
end
现在您可以在views / search.html.erb中使用此变量,
<%=client.search(your_variable, result_type: "recent").take(5).collect do |tweet| %>
答案 3 :(得分:0)
首先,如果您在初始化文件中添加twitter配置并使其可以全局访问,那将会更好。尽量避免在视图中使用太多逻辑。
e.g。
# config/initializers/twitter.rb
$twitter_client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV['CONSUMER_KEY']
config.consumer_secret = ENV['CONSUMER_SECRET']
config.access_token = ENV['YOUR_ACCESS_TOKEN']
config.access_token_secret = ENV['YOUR_ACCESS_SECRET']
end
虽然搜索表格看起来像Pardeep Saini建议的那样
#app/views/index.html.erb
<%= form_tag 'your_path_for_search' do %>
<%=text_field_tag :search%>
<%=submit_tag, "Search"%>
<% end %>
然后在您的搜索控制器上查看
#app/controllers/search_controller.rb
def search
@result = $twitter_client.search(params[:search], result_type: "recent").take(5)
end
#app/views/search.html.erb
<ul>
<%= @result.each do |tweet| %>
<li><%= "#{tweet.user.screen_name}: #{tweet.text}" %> </li>
<% end %>
</ul>