single.js:
import React, { Component } from 'react';
import Details from '../components/details'
import { ProgressBar } from 'react-materialize';
import { Route, Link } from 'react-router-dom';
const Test = () => (
<div> RENDER PAGE 1</div>
)
class SinglePage extends Component {
constructor(props) {
super(props);
this.state = {
data: null,
}
}
componentDidMount() {
fetch('http://localhost:1337/1')
.then((res) => res.json())
.then((json) => {
this.setState({
data: json,
});
});
}
render() {
const { data } = this.state;
return (
<div>
<h2> SinglePage </h2> …Run Code Online (Sandbox Code Playgroud) 我需要在我的应用程序中使用外部API才能获得公司信息.从未在Ruby中使用过API,我不知道从哪里开始.也许有一个宝石,但我发现2 API返回给我JSON:https://datainfogreffe.fr/api/v1/documentation和https://firmapi.com/(他们在法国抱歉) .有人有一个很好的教程或提示来帮助我开始吗?
最后的需求是通过提供公司ID来检索公司数据.
在Rails API中,我在UsersController中有一个登录POST方法,它接受2个参数(邮件和密码),如果找到记录则检入DB,如果是,则返回JSON.
def login(mail, password)
mail, password = params.values_at(:mail, :password)
user = User.where(mail: mail, password: password)
render json: user
end
Run Code Online (Sandbox Code Playgroud)
在我的正面,在React中,我使用fetch调用此方法,该方法在表单中获取邮件和密码值,并期望在我的用户中将用户设置为JSON 'res':
login = () => {
if(this.state.mail != null && this.state.password != null){
fetch('http://127.0.0.1:3001/api/login', {
method: 'post',
body: JSON.stringify({
mail: this.state.mail,
password: this.state.password
}),
headers: {
'Accept': 'application/json',
'Content-type': 'application/json'
}
})
.then((res) => {
console.log(res)
if(res.data.length === 1 ){
const cookies = new Cookies();
cookies.set('mercato-cookie',res.data[0].id,{path: '/'});
this.setState({redirect: true})
}
})
} bodyUsed: false
headers: Headers { } …Run Code Online (Sandbox Code Playgroud) 我想在 ActiveAdmin 中的用户模型上添加一个名为approve的member_action。我查看了文档,但一切都不一样,我对如何做到这一点感到很困惑。到目前为止,我只显示批准链接(在“查看”、“编辑”和“删除”旁边)。
管理员/用户.rb:
member_action :approve, method: :post do
user = User.find params[:id]
user.approve!
redirect_to admin_user_path(user), notice: "Approved!"
end
Run Code Online (Sandbox Code Playgroud)
并显示链接:
actions defaults: true do |user|
link_to 'Approve',approve_admin_user_path(user)
end
Run Code Online (Sandbox Code Playgroud)
模型/用户.rb:
def approve!
update(bio_validee: true)
end
Run Code Online (Sandbox Code Playgroud)
当我单击链接时,出现路由错误:
No route matches [GET] "/admin/users/21/approve"
Run Code Online (Sandbox Code Playgroud)
这rake routes是做什么的(对于管理员/用户路由):
approve_admin_user POST /admin/users/:id/approve(.:format) admin/users#approve
batch_action_admin_users POST /admin/users/batch_action(.:format) admin/users#batch_action
admin_users GET /admin/users(.:format) admin/users#index
POST /admin/users(.:format) admin/users#create
new_admin_user GET /admin/users/new(.:format) admin/users#new
edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit
admin_user GET /admin/users/:id(.:format) admin/users#show
PATCH /admin/users/:id(.:format) admin/users#update
PUT /admin/users/:id(.:format) admin/users#update
DELETE /admin/users/:id(.:format) admin/users#destroy …Run Code Online (Sandbox Code Playgroud) 我正在使用 Mocha 来测试我的 API,我创建了一个文件来测试我的用户路由,这些路由包含在其自定义文件中。我还制作了一个空的 JSON 文件,它将在每次测试前后分别填充和清空。
包含测试的文件 --> user-routes.spec.js :
const request = require("supertest")
require('chai').should()
const bodyParser = require("body-parser")
const app = require('./../../app')
const usersFixture = require("../fixtures/users-fixtures")
describe('Courses', () =>{
beforeEach(() => { usersFixture.up() })
afterEach(() => { usersFixture.down() })
describe('Get users list', ()=>{
it("Should get a list of all users", ()=>{
return request(app).get('/courses')
.then((res) => {
// res.body.should.have.lengthOf(1)
// res.body[0].title.should.eql("Ma course")
}).catch((err) =>{
console.log(err)
throw new Error(err);
})
})
})
})
Run Code Online (Sandbox Code Playgroud)
应用程序.js:
const mongoose = require("mongoose");
const bodyParser = …Run Code Online (Sandbox Code Playgroud) 我是React的新手,我已经<Link>从dy数据中转到下一个或上一个项目(例如,如果我在user / 2视图上,则上一个链接转到user / 1,下一个链接转到user / 3 ),则正确更改了url,但根本没有呈现该组件,也根本没有重新加载数据。
我读到这是由于组件未检测到子代未更改状态,因此父组件未呈现。
我尝试使用,withRouter但出现错误:You should not use <Route> or withRouter() outside a <Router>如果有人有解决方案并对此有一些解释,我不明白我在做什么,我将不胜感激:)
App.js:
import React, { Component } from 'react';
import {
Route,
Switch,
withRouter,
} from 'react-router-dom';
import HomePage from './pages/home';
import SinglePage from './pages/single';
class App extends Component {
render() {
return (
<Switch>
<div>
<Route exact path="/" component={HomePage} />
<Route path="/:id" component={SinglePage} />
</div>
</Switch>
);
}
}
export default withRouter(App);
Run Code Online (Sandbox Code Playgroud)
Single.js:
import React, …Run Code Online (Sandbox Code Playgroud) reactjs ×3
javascript ×2
react-router ×2
activeadmin ×1
api ×1
express ×1
fetch ×1
geometry ×1
geos ×1
json ×1
mocha.js ×1
node.js ×1
ruby ×1
testing ×1