我正在尝试让图像在点击时将所选指南与项目相关联。我正在使用有点行为的link_to_function但我无法获取我在link_to_function中调用的方法以重定向到另一个页面。有一个更好的方法吗?下面是我的一些代码。如有必要,我可以粘贴其他部分:
<% @guidelines.each do |guideline| %>
<tr>
<td align='center'><%= link_to_function image_tag("../../../images/icons/action_add.png"), add_guideline(guideline) %></td>
<td><%=h guideline.title %></td>
我的GuidelinesController.helper方法如下所示:
def add_guideline(guideline)
@project = Project.find(params[:project_id])
@project.guidelines << guideline
@project.save
redirect_to dashboard_path #doesn't work :(
end
答案 0 :(得分:1)
link_to_function
用于向您的链接添加Javascript。
在您的代码中,正在调用add_guideline
,其结果将作为link_to_function
调用的第二个参数传递。
您可以将其添加到config/routes.rb
# overwrite map.resources :projects
map.resources :projects, :member => {
:add_guideline => :get,
:create_guideline => :post
}
add_guideline_project GET /projects/:id/add_guideline(.:format)
create_guideline_project POST /projects/:id/create_guideline(.:format)
<%= link_to(
image_tag("/images/icons/action_add.png"),
add_guideline_project_path(@project)
) %>
ProjectsController#add_guideline
。在这里你可以做你一直在尝试的事情:
# app/controllers/projects_controller.rb
def add_guideline
@project = Project.find(params[:id])
# render app/views/projects/add_guideline.html.erb
# create your form in this view
end
def create_guideline
@project = Project.find(params[:project_id])
@guideline = Guideline.find(params[:guideline_id])
@project.guidelines << @guideline
redirect_to dashboard_path
end
答案 1 :(得分:0)
在呈现页面之前评估帮助程序并返回结果... link_to_function在呈现页面后使用JavaScript客户端。
从您的代码中猜测,您可能应该在控制器中执行一项操作,该操作采用project_id和guideline_id为项目添加指南。然后,您的链接应该反映这一点,例如projects_add_guideline_path(项目,指南)以及新操作中帮助程序的内容。
在视图中:
link_to projects_add_guideline_path(@project, guideline)
在控制器中:
def add_guideline_to_project
@project = Project.find(params[:project_id])
@guideline = Guideline.find(params[:guideline_id])
@project.guidelines << @guideline
@project.save
redirect_to dashboard_path
end
答案 2 :(得分:0)
我使用
来完成这项工作<%= link_to(image_tag("/images/icons/action_add.png"), add_guideline_to_project_path(@project, :guideline_id => guideline.id)) %></td>
<td><%=h guideline.title %></td>
和这个方法:
def add_guideline_to
@project = Project.find(params[:id])
@guideline = Guideline.find(params[:guideline_id])
@project.guidelines << @guideline
@project.save
redirect_to @project
end
我还更新了我的路线,包括:
map.resources :projects, :member => {
:add_guideline => :get,
:create_guideline => :post
}
谢谢大家!