我是学生实习生,我必须改进公司的网站。我在Ruby on Rails中创建了一个部分,我想在同一页面上多次使用它。我有一些导航标签,根据活动标签,相同的部分应显示不同的参数。
我想要做的是在用户更改活动选项卡时重新呈现我的部分。所以我在网上搜索了如何使用rails和js重新渲染部分,似乎我必须使用ajax(在rails中使用respond_to)。所以我做了它,在网站的其他地方也有类似的东西,但它对我不起作用,我很确定,这是一个路由问题,因为在网站上它是&#39 ; s在特定页面上完成(例如beneficiaries/1
),但我必须在stories/new
这是调用函数重新呈现代码的链接:
= link_to 'Activities', modify_tab_new_project_story_path(@project), method: :post, remote: true, :style => 'text-align: center;'
然后在routes.rb文件中:(我尝试了很多不同的东西,但没有一个工作)
resources :projects, only: [:show, :destroy] do
resources :stories do
post :modify_tab, on: :new
end
end
我的控制器:
def change_tab
respond_to do |format|
format.js
end
end
最后我被重定向到:
http://localhost:3000/projects/issue-1004/stories/new/modify_tab
而不是停留在同一页面。
而我使用方法post。
我的大脑真的很困惑,所以我可能犯了一些错误。
在网站上运作的东西:
以下是观点:
= form_tag create_note_charity_beneficiaries_path(@charity), method: :post, remote: true, id: 'note_form' do
然后是routes.rb:
resources :charities, except: :index do
resources :beneficiaries do
collection do
post :create_note
end
end
end
最后是控制器:
def create_note
note = Note.create(params[:note])
@beneficiary = note.beneficiary
respond_to do |format|
format.js
end
end
还有一个create_note.js.erb文件,我也创建了一个,但问题出现在这个文件之前,所以我没有把它放在这里。
希望有人能帮助我
由于