我无法获得工作链接: 用户可以发布职位列表。其他用户可以查看职位列表并单击“申请”。 现在应该出现一个表单供用户填写一些信息。但是我无法正确获取路径和路径文件。 这是show.html.erb中正在运行的链接
<li><%= link_to "Apply Now", listing_apply_path(id: listings.id) %></li>
表单位于views / listings / apply.html.erb
下目录/ show.html.erb
<div class="show_listing">
<div class="col-md-6">
<div class="col-md-6">
<h3><%= @listing.title %></h3>
<h3><%= @listing.location %></h3>
<p><%= @listing.description %></p><br>
<div class="center">
<li><%= link_to "Apply Now", listing_apply_path(id: listings.id) %></li>
</div>
</div>
</div>
</div>
<div class="show_link_position">
<% if current_user == @listing.user %>
<%= link_to 'Edit', edit_listing_path, class: "btn btn-link" %> |
<% end %>
<%= link_to 'Back', current_user, class: "btn btn-link" %>
</div>
listings_controller.rb
def apply
@listing = Listing.find(params[:id])
end
和路线
Rails.application.routes.draw do
resources :categories
get 'notifications/index'
get 'notifications/create'
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :listings
root 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via:'delete'
match '/help', to: 'static_pages#help', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/new', to: 'listings#new', via: 'get'
match '/users/:name/:id', to: 'listings#show', via: :get, as: :user_listing
match '/findjobs', to: 'listings#index', via: 'get'
match '/users/:name/:id/edit', to: 'listings#edit', via: 'get'
match '/:id/apply', to: 'listings#apply', via: 'get'
感谢您的帮助!
答案 0 :(得分:2)
虽然Coderhs已经为你添加了一些东西,你还需要命名这条路线,这样就可以像这样找到匹配器:
match '/:id/apply', to: 'listings#apply', via: 'get', as: :listing_apply
通过这种方式,您可以访问网址助手listing_apply_path
还需要match
和via
,您只需指定
get '/:id/apply', to: 'listings#apply', as: :listing_apply
match
表示任何方法(例如POST
,GET
,PUT
,DELETE
)
get
表示处理GET
个请求。
match
与:via
的{{1}}与get
相同,没有它。在我需要2个或更多VERBS到达同一个地方的情况下,我只使用via
。否则我只需指定所需的方法。
来自http://guides.rubyonrails.org/routing
将GET和POST请求路由到单个操作具有安全隐患。通常,除非有充分的理由,否则应避免将所有动词都路由到动作。
更新
你问了
为什么我需要告诉路由我需要路径为:listing_apply。为什么我不能这样做让我们说编辑路径?
resources
方法为您创建这些
resources :listings
为您生成以下路线
listings GET /listings listings#index
POST /listings/create listings#create
new_listing GET /listings/new listings#new
edit_listing GET /listings/:id/edit listings#edit
listing GET /listings/:id listings#show
PUT /listings/:id listings#update
DELETE /listings/:id listings#destroy
这样可以访问listings_path
,new_listing_path
,edit_listing_path
和listing_path
。对于非命名路由,它使用VERB(POST,PUT,DELETE)来确定路由
答案 1 :(得分:1)
应该是
<li><%= link_to "Apply Now", listing_apply_path(id: @listing.id) %></li>
您需要将实例变量传入路径,在视图内部使用列表未定义。