Ruby on rails Rails |允许在视图中使用输入数据,而无需存储数据

Ruby on rails Rails |允许在视图中使用输入数据,而无需存储数据,ruby-on-rails,Ruby On Rails,我在玩twitter gem时遇到了以下问题 这是我非常简单的观点,它的唯一目的是从给定的Twitter句柄返回前20条tweet home.html.erb <%@client.user_timeline("BU_Tweets").each do |tweet|%> <p><%= tweet.text%></p> <% end %> 我有没有办法在同一个页面上创建某种形式的表单,它会问用户一些类似“请输入twitter

我在玩twitter gem时遇到了以下问题

这是我非常简单的观点,它的唯一目的是从给定的Twitter句柄返回前20条tweet

home.html.erb

<%@client.user_timeline("BU_Tweets").each do |tweet|%>
    <p><%= tweet.text%></p>
<% end %>

我有没有办法在同一个页面上创建某种形式的表单,它会问用户一些类似“请输入twitter句柄:”的问题,将该单词保存在一个变量中,并在如下方式中使用该变量:

<%@client.user_timeline(#{twitter_handle}).each do |tweet|%>
    <p><%= tweet.text%></p>
<% end %> 
<%= form_tag <some_url> do %>
  <%= text_field_tag 'handle' %>
  <%= hidden_field_tag 'client', @client %>
<%= submit_tag 'Submit' %>

我不明白为什么我需要创建一个完整的模型来存储这些单词


我在谷歌上搜索了一下,似乎大多数人都推荐javascript。我不知道任何javascript,所以我想知道是否有Ruby/Rails方法可以解决这个问题?

如果您不想使用javascript,则需要在用户提交表单后刷新整个页面。有这样一种形式:

<%@client.user_timeline(#{twitter_handle}).each do |tweet|%>
    <p><%= tweet.text%></p>
<% end %> 
<%= form_tag <some_url> do %>
  <%= text_field_tag 'handle' %>
  <%= hidden_field_tag 'client', @client %>
<%= submit_tag 'Submit' %>
然后在该页面上执行以下操作:

<% @timeline.each do |tweet|%>
  <p><%= tweet.text%></p>
<% end %>


如果您不想使用javascript,则需要在用户提交表单后刷新整个页面。有这样一种形式:

<%@client.user_timeline(#{twitter_handle}).each do |tweet|%>
    <p><%= tweet.text%></p>
<% end %> 
<%= form_tag <some_url> do %>
  <%= text_field_tag 'handle' %>
  <%= hidden_field_tag 'client', @client %>
<%= submit_tag 'Submit' %>
然后在该页面上执行以下操作:

<% @timeline.each do |tweet|%>
  <p><%= tweet.text%></p>
<% end %>


据我所知,您实际上是在尝试模拟异步行为,而不实际使用javascript(这有点像读取标志)。实现这一点的“rails方法”是使用您正在避免的两种方法之一:javascript(最佳)或使用数据库。您可以将
attr\u访问器
组合起来,创建一个虚拟字段,一个可以接受该字段结果作为参数的自定义路由,然后找出如何将
attr\u访问器
字符串吐到您的
更新方法上。
这绝对不是“rails方式”,也不可取。据我所知,实际上,您试图模拟异步行为,而不实际使用javascript(这有点像读取标志)。实现这一点的“rails方法”是使用您正在避免的两种方法之一:javascript(最佳)或使用数据库。您可以将
attr\u访问器
组合起来,创建一个虚拟字段,一个可以将该字段的结果作为参数接受的自定义路由,然后找出如何将
attr\u访问器
字符串转换到您的
更新方法。
这绝对不是“rails方式”,也不可取。