【发布时间】:2020-10-13 00:05:43
【问题描述】:
让我开始,我是 Rails 的新手,到目前为止,我已经能够解决我迄今为止遇到的所有问题。我可以确认我的数据库已设置并且关系正常。这是我的问题,该应用程序类似于项目管理工具。我的用户可以创建滑雪交换然后搜索供应商,然后我使用 javascript(ajax) 呈现结果,因此我不必重新加载页面。我添加了一个徽章,以便我可以使用它来将用户添加为供应商。截至目前,我可以让用户参数没有问题,但我似乎无法让我尝试过的skiswap参数。如果我对其进行硬编码,它将起作用,所以我很接近但无法弄清楚
在我的内心 skiswap#index 我有这个用于搜索 在这个上面我使用@skiswap
<%= form_tag search_vendors_path, remote: true, method: :get do %>
<div class='form-group row'>
<div class ="input-group col-sm-3">
<%= text_field_tag :search, params[:search], placeholder: "Shop name, email, or contact...", autofocus: true, class: "form-control form-control-sm"%>
<div class="input-group-prepend">
<%= button_tag type: :submit, class: "btn btn-info btn-sm", id: "small-serach" do %>
<i class="fas fa-search" id = "search-icon"></i>
<% end %>
</div>
</div>
</div>
<% end %>
我的搜索正在工作,这就是我在 VendorController 中的内容
def search
@users = User.where(["concat_ws(' ' , first_name, last_name, email, company ) ILIKE ?", "%#{params[:search]}%"])
respond_to do |format|
format.js{ render partial: 'skiswaps/result'}
end
end
我的结果在这里,这是我用来添加新供应商的徽章,目前我对其进行了硬编码,因为我无法弄清楚。我正在为我的结果使用 j 渲染...我已经尝试过skiswap_vendors_path(vendor: user,skiswap_id:@skiswap.id) 也skiswap_vendors_path(vendor: user,skiswap:@skiswap) @skiswap 显示为nil。不确定是否因为我的结果是部分的一部分,它们似乎没有显示页面中应该显示的参数。
<% @users.each do |user| %>
<tr>
<td><%= link_to "Add", skiswap_vendors_path(vendor: user, skiswap_id: 4),
class: "badge badge-success", method: :post %></td>
<td> <strong>Shop: </strong><%= user.company %> </td>
<td> <strong>Contact: </strong><%= user.first_name %> <%= user.last_name %>, <%= user.email%></td>
</tr>
<% end %>
然后在我的 VendorController 中创建这个,只有在我对其进行硬编码时才有效
def create
vendor = User.find(params[:vendor])
skiswap = Skiswap.find(params[:skiswap_id])
skiswap.vendors.build(user_id: vendor.id)
if skiswap.save
flash[:notice] = "You add #{vendor.company} as a vendor"
else
flash[:notice] = "Sorry something went wrong, try again later"
end
end
这就是我所拥有的路线
get 'search_vendors', to: 'vendors#search'
resources :skiswaps do
resources :vendors
end
【问题讨论】:
-
@skiswap没有在search操作中初始化,它应该来自哪里? -
它在索引中初始化(skiswap控制器),我的搜索结果显示在skiswap索引页面...我不知道如何通过搜索动作初始化...我明白你的意思了现在正在说。我确实尝试在点击搜索时传递skiswap参数,但得到了两个很多参数
-
@Eyeslandic 谢谢你,我只是需要有人指出这一点。我添加了一个 来传递额外的变量
-
很高兴为您提供帮助,祝您好运
标签: ruby-on-rails ajax parameters partial