我遇到的问题是找到一个简单的答案,我认为这是一个非常简单的问题。
我想要做的就是使用任何类型的文本字段搜索“主题”,然后将用户重定向到正确的页面以输入有关该主题的一些信息。
因此,如果用户输入“1001”,他将被带到一个表格,该表格将由已为主题“1001”输入的任何数据填充。
所以我想这就是我想弄清楚的事情:
假设只搜索一个变量,@ subject.subject_id。
如何从文本字段存储变量,以便我能够将该变量传递到link_to字段,然后该字段将填充整个页面的主题信息?
我添加了一个新的控制器元素(populate_values):
subjects_controller.rb
def update
@subject = Subject.find(params[:id])
respond_to do |format|
if @subject.update_attributes(params[:subject])
format.html { redirect_to @subject, notice: 'Subject was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @subject.errors, status: :unprocessable_entity }
end
end
end
...
def populate_values
@subject_id = params[:subject_id]
redirect_to screening_path(@subject_id)
end
end
这是我的一些路线代码,请原谅我是一个菜鸟 - 我还在弄清楚是什么触发了什么。
的routes.rb
#resources :subjects, only: [:new, :create, :destroy] # Copied th
resources :subjects
...
match '/subjects', to: 'subjects#show'
match '/newsubject', to: 'subjects#new'
match '/subjects', to: 'subjects#index'
match '/showsubject', to: 'subjects#show'
match '/editsubject', to: 'subjects#edit'
match '/screening', to: 'subjects#screening'
#match '/populate_values', to: 'subjects#screening' #Just trying to figure out things.
这是我从用户输入值的视图。我觉得无论我实际上做错了什么,最有可能源于这种形式。此外,如果重要,此表单位于用户视图中而不是主题视图中。
视图/用户/ show.html.erb
<% provide(:title, @user.name) %>
<div class="row">
<aside class="span4">
<section>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
<hr>
</section>
<div class="user_profile">
<h2>Data Entry</h2>
<body>
<p><%= link_to "Add a new Patient", newsubject_path %></p>
<p><%= link_to "View Patients", subjects_path %></p>
<%= form_tag('/subjects_controller/populate_values') do %>
<%= text_field_tag 'subject_id' %>
<div class="btn btn-link">
<%= submit_tag "Screening Log" %>
</div>
<% end %>
</body>
</div>
</aside>
</div>
非常感谢任何帮助。
编辑1。
我正在搞乱
<%= link_to "Screening", screening_path, :subject_id => subject.subject_id, :class => 'btn btn-mini' %>
然而它无法识别subject.subject_id。 “未定义的局部变量或方法主题”。
答案 0 :(得分:0)
如果我理解正确,您希望在“搜索”页面上有一个链接,该链接会动态地包含用户刚刚输入的主题ID作为参数。
事情不会这样。您面临的问题如下:搜索页面上的实际链接是在加载页面时,即在用户输入任何内容之前,因此无法链接到用户输入的任何内容。 当然有办法可以做到这一点(例如使用javascript),但在这里,我认为你只想使用表格。
例如:
:搜索页面,其中包含一个表单,该表单将捕获subject_id并在主题控制器中调用操作,并将此主题传递给subject_id
主题控制器中的此操作可以是,例如,更新操作,如果您使用Rails脚手架功能,它将使用主题视图中可能存在的相应编辑视图进行响应。它也可以是您创建的另一个控制器操作,并使用主题视图中的特定视图进行响应。
此Stackoverflow问题应该可以帮助您创建提交给另一个控制器的表单= form_for but to post to a different action。
只需调整表单以将其挂钩到主题控制器,然后将其放在用户视图的搜索页面中。