我一直试图让这个工作3天了。我似乎无法理解为什么它不起作用。当用户单击视图上的link_to标记时,它应该在控制器中执行csv函数。 Instread我得到一个例外。
以下是相关文件
控制器文件:(users_controller.rb)
def csv
end
(routes.rb中):
resources :users
查看:(show.html.erb)
<%= link_to 'Click HERE to open file', @user.image.url %><br/><br/><br/>
<%= label_tag(:q, "Parse CSV File:") %><br/>
<%= link_to 'CSV', csv_user_path %>
<% end %>
当我点击上面的“link_to'CSV'..标签时。它给了我这个例外:
NameError in Users#show
Showing /Users/AM/Documents/RailsWS/bmc_mam/app/views/users/show.html.erb where line #47 raised:
Extracted source (around line #47):
44:
45: <%= label_tag(:q, "Parse CSV File:") %><br/>
46:
47: <%= link_to 'CSV', csv_user_path %>
48:
49:
50:
发生异常时,浏览器URL如下:
http://localhost:3000/users/28
它明显地进入了该功能,但URL映射/路由显然搞砸了。我想知道如何解决它.....我过去几天尝试了几种方法,似乎都没有工作。 这是我最接近使其工作的原因......
提前感谢您的帮助。
在@Gavin Miller发布的帖子回复后:
我将routes.rb文件改为:
get 'csv' => 'users#csv'
resources :users
现在我得到了这个例外:
NameError in Users#show
Showing /Users/AM/Documents/RailsWS/bmc_mam/app/views/users/show.html.erb where line #47 raised:
undefined local variable or method `csv_user_path' for #<# <Class:0x00000104e7f6f8>:0x00000103a23c68>
Extracted source (around line #47):
44:
45: <%= label_tag(:q, "Parse CSV File:") %><br/>
46:
47: <%= link_to 'CSV', csv_user_path %>
48:
49:
50:
答案 0 :(得分:1)
声明resources :users
只会推断出7个标准RESTful动作 1 。如果您希望csv
被接受为路线,则必须明确定义它:
get 'csv' => 'controller#action'
其中controller == users
和action == csv
。
重新解决已编辑的问题...您需要将用户对象传递给csv_user_path
函数:
<%= link_to 'CSV', csv_user_path(@user) %>
您似乎也希望将该网址与该用户相关联,因此您可以将其声明为member
以获取类似以下内容的网址:http://localhost:3000/users/28/csv
,您可以使用此结果代码:
resources :users do
member do
get 'csv'
end
end
<小时/> 1 REST
index, new, create, show, edit, update, destroy
行为{{1}}